请求加强数据

P1306 斐波那契公约数

可以卡掉 @[HelloHaoGe](/user/604147) 以及[与其类似的暴力做法](https://www.luogu.com.cn/record/82554706) ```cpp #include<iostream> using namespace std; long long x,y,s; long long a,b,c; long long gys(long long i,long long j) { if(i%j==0) return j; return gys(j,i%j); } int main() { cin>>x>>y; if(x<y) swap(x,y); s=gys(x,y); if(s<3) { cout<<1; return 0; } a=1,b=1; if(s>=1000000000) s=100000000; for(long long i=2;i<s;i++){ c=(a+b)%100000000; // if(c==60546875) cout<<i<<endl; a=b,b=c; } cout<<c; return 0; } ```
by Flamming @ 2022-08-06 12:25:22


@[小粉兔](/user/10703)
by Flamming @ 2022-08-06 12:25:58


草,hack 给错了,是: ``` 999999989 999999989 ```
by Flamming @ 2022-08-06 12:29:06


输出: ``` 4687589 ```
by Flamming @ 2022-08-06 12:29:20


把我的暴力算法稍微改一下,也是暴力,但也能过 ``` #include<iostream> using namespace std; long long x,y,s; long long a,b,c; long long gys(long long i,long long j) { if(i%j==0) return j; return gys(j,i%j); } int main() { cin>>x>>y; if(x<y) swap(x,y); s=gys(x,y); if(s<3) { cout<<1; return 0; } a=1,b=1; int tt,ttt; while(s-10000>0){ c=(a*38230626+b*473666875)%100000000; tt=(a*47366875+b*85597501)%100000000; ttt=(a*85597501+b*32964376)%10000000; a=tt,b=ttt; s-=10000; } // if(s>=1000000000) s=100000000; for(long long i=2;i<s;i++){ c=(a+b)%100000000; // if(c==60546875) cout<<i<<endl; a=b,b=c; } cout<<c; return 0; } //38230626 47366875 //47366875 85597501 //85597501 32964376 ``` 即使把数据加强到高精,把23-29行略改一下也行
by HelloHaoGe @ 2022-08-06 12:40:41


总之有点头脑的暴力算法,无论数据怎么改都能过
by HelloHaoGe @ 2022-08-06 12:43:18


@[HelloHaoGe](/user/604147) 不懂您在说什么,您改进后的代码显然 WA
by Flamming @ 2022-08-06 12:48:37


@[Flamming](/user/735315) 数字打错了
by HelloHaoGe @ 2022-08-06 12:53:21


@[HelloHaoGe](/user/604147) 所以正确的数字是?
by Flamming @ 2022-08-06 12:54:34


@[HelloHaoGe](/user/604147) 还有不太理解您的做法,不然矩阵快速幂不就没用啦?
by Flamming @ 2022-08-06 13:02:20


| 下一页