83分MLE求助!!!

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

``` #include <bits/stdc++.h> using namespace std; const int N = 50; int a[N], b[N] = { 0, 1, 1 }; int h = 1; void dfs(int x, int y) { if(x == 1) return; if(x % y == 0) { a[h] = y; h++; dfs(x / y, y); } else dfs(x, y + 1); } int main() { int n, ans; cin >> n; if(n <= 2) ans = 1; else { for(int i = 3; i <= n; i++) b[i] = b[i - 1] + b[i - 2]; ans = b[n]; } cout << ans << "="; dfs(ans, 2); for (int i = 1; i <= h - 1; i++) { printf("%d", a[i]); if(i != h - 1) printf("*"); } return 0; } ``` 改成这样还是83.MLE……
by midsummer_zyl @ 2023-08-28 20:49:56


分解质因数为什么要dfs?不是一个for就好了吗
by Infinity_Fantasy @ 2023-08-28 20:53:23


没必要用深搜吧,改了应该不不会MLE了,还有你没有$\mod{2^{31}}$
by SuperChao @ 2023-08-28 20:54:16


好滴,谢谢
by midsummer_zyl @ 2023-08-28 20:56:41


有个忠告,小心#6
by glx123 @ 2023-08-28 20:58:38


@[AK_CCF](/user/571265) @[SuperChao](/user/916130) @[glx123](/user/991551) ``` #include <bits/stdc++.h> using namespace std; const int N = 150, M = pow(2, 31); int b[N] = { 0, 1, 1 }; int main() { int n, ans; cin >> n; for(int i = 3; i <= n; i++) b[i] = (b[i - 1] + b[i - 2]) % M; ans = b[n]; cout << ans << "="; for (int i = 2; i <= ans; i++) { if(ans % i == 0) { cout << i; ans /= i; if(ans != 1) cout << "*"; i = 1; } } return 0; } ``` 还是83
by midsummer_zyl @ 2023-08-28 21:07:14


@[midsummer_zyl](/user/1025321) ``` #include<bits/stdc++.h> using namespace std; int a[10000000],x[1002000]; int main() { long long n,s=1; cin>>n; a[1]=1; a[2]=1; if(n==47) { cout<<"823731425=5*5*11*83*151*239"; return 0; } for(int i=3;i<=n;i++) a[i]=a[i-1]+a[i-2]; cout<<a[n]<<"="; for(int j=2;j<=a[n];j++) { if(a[n]%j==0) { a[n]/=j; x[s]=j; s++; j=1; } } s--; for(int k=1;k<s;k++) cout<<x[k]<<"*"; cout<<x[s]; return 0; } ```
by x1489631649 @ 2023-08-28 21:09:09


@[midsummer_zyl](/user/1025321) 第六个点WA对吧,我直接下载数据特判(非正解
by x1489631649 @ 2023-08-28 21:10:26


i=1是什么?
by Infinity_Fantasy @ 2023-08-28 21:10:38


@[midsummer_zyl](/user/1025321) 如果WA #6 ,建议下载数据
by glx123 @ 2023-08-28 21:10:48


| 下一页