关于此题MLE的疑问

P2626 斐波那契数列(升级版)

啊,等会。我自己似乎看出错误了。
by AFwhcing @ 2020-10-16 22:14:46


~~呸~~,还是~~TM~~0分! (恕我用词不当,但是实在CQ。)
by AFwhcing @ 2020-10-16 22:29:02


好家伙,稍微改了一下竟然 # 听取WA声一片。。。 ## 青WA代码: ```cpp #include<bits/stdc++.h> using namespace std; long long fibonacci(long long n){ if(n<3) return 1; return fibonacci(n-1)+fibonacci(n-2); } int main(){ long long n; n=fibonacci(n)%2147483647; printf("%d=",n); for(int i=2;i*i<=n;++i){ while(n%i==0){ printf("%d",i); n/=i; if(n>i) printf("*"); } } return 0; } ``` 哈,我口吐锦绣)*$&(&*#({@}$)$%)@{}$($&@^&$^@&#^$()@%!
by AFwhcing @ 2020-10-16 22:42:32


可以用数组存一下,节约时间 ```cpp if(n>i) printf("*"); ``` 假如n=4,会输出22,中间没空格 ```cpp for(int i=2;i*i<=n;++i){ ``` n是质数的话怎么办 AC代码 ```cpp #include<iostream> #include<cmath> using namespace std; int m = pow(2,31); int f[50] = {0,1,1,2,3,5}; int fbi(int n){ if(f[n]) return f[n]; f[n] = (fbi(n-1)+fbi(n-2))%m; return f[n]; } int main(){ int x; cin >> x; x = fbi(x); cout << x << "="; bool flag = 1; for(int i = 2; i <= x; i++){ while(x%i==0){ if(flag==1){ cout << i; flag = 0; } else { cout << "*" << i; } x/=i; } } return 0; } ```
by yyz1005 @ 2020-10-21 19:18:53


2147483647是2^31-1.....
by yyz1005 @ 2020-10-21 19:29:00


@[蒟蒻de小王](/user/373959) 2的31次方是`2147483648`,且建议使用记忆化
by qwq___qaq @ 2021-08-19 09:01:42


|