数组开太大,所以CE
by OrangePayne @ 2023-08-19 18:54:09
由于你开得实在太大了,编译器就先给你干掉
by OrangePayne @ 2023-08-19 18:55:01
别用筛子,直接枚举判断
by OrangePayne @ 2023-08-19 18:56:57
@[francais](/user/807670)
by OrangePayne @ 2023-08-19 18:57:25
```cpp
#include<iostream>
using namespace std;
long long n,a[100000005],f[500],tmp,cnt,num;
int fib(int m)
{
f[1]=f[2]=1;
for(int i=3;i<=m;i++)
{
f[i]=f[i-1]+f[i-2];
f[i]%=2147483648;
}
return f[m];
}
int main(){
cin>>n;
tmp=fib(n);
cout<<tmp<<"=";
num=0;
for(int i=2;i*i<=tmp;i++){
bool f=1;
for(int j=2;j*j<=i;j++){
if(i%j==0){
f=0;
break;
}
}
if(f==0)continue;
while(tmp%i==0&&tmp>i){
tmp/=i;
cout<<i;
if(tmp>=i){
cout<<"*";
}else{
if(tmp)cout<<tmp<<endl;
else cout<<endl;
return 0;
}
}
}
if(tmp)cout<<tmp<<endl;
else cout<<endl;
return 0;
}
```
by OrangePayne @ 2023-08-19 19:05:30
AC的 帮你把分解质因数改了一下
by OrangePayne @ 2023-08-19 19:06:15
```cpp
#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1 << 31;
int n;
long long f[50];
long long t[50];
int cnt = 0;
// decomposition prime fector:分解质因数
void dpf(int x)
{
for (int i = 2; i <= x; i++)
{
while (x % i == 0)
{
t[++cnt] = i;
x = x % MOD / i % MOD;
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
f[1] = 1;
f[2] = 1;
cin >> n;
for (int i = 3; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2] ;
}
dpf(f[n] % MOD);
cout << f[n] % MOD << "=";
for (int i = 1; i < cnt; i++)
{
cout << t[i] << "*";
}
cout << t[cnt] ;
return 0;
}
```
最好是别分解边取模 附上AC代码
by coool @ 2023-08-20 00:06:19