关于洛谷编译出错的问题
march_Wu175 · · 个人记录
今天我在做P2568 GCD 这道题的时候,交了很多次。每次都是编译出错。
我在devc++中运行是没有任何问题,在洛谷的在线IDE中会报告“ Nothing is compiled: OUTPUT exceeds . ” 这个错误。
大意是没有编译任何东西,输出超过。很奇怪啊,从没遇到过。下面是我当时的代码;
#include <bits/stdc++.h>
using namespace std;
int cnt,n;
int prime[10000005],phi[10000005]={0,1};
bool tf[10000005]={1,1};
long long pre[10000005]={0},ans;
int main(){
cin >>n;
for(int i=2;i<=n;i++){
if(!tf[i]){
prime[++cnt]=i;
phi[i]=i-1;
}
for(int j=1;j<=cnt && i*prime[j]<=n;j++){
tf[i*prime[j]]=1;
if(i%prime[j]==0){
phi[i*prime[j]]=phi[i]*prime[j];
break;
}else{
phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
}
for(int i=1;i<=n;i++){
pre[i]=pre[i-1]+phi[i];
}
for(int i=1;i<=cnt && prime[i]<=n;i++){
ans+=(pre[n/prime[i]]<<1)-1;
}
cout<<ans;
return 0;
}
后来,我把4--6行的数组赋值放到主函数里,就奇迹般的ac了。也是很无语,很震惊。所以在这里大胆猜测一下,是不是数组开太大,赋值要放在main函数里。这里警醒一下后人,数组赋值最好放在主函数里。[大哭]