66pts,#3#6RE,改了p数组大小之后CE(不是MLE),求大佬指点

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

数组开太大,所以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


|