```
#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