在a007.判斷質數吃了無數次TLE後,也學著用建表的方法過了,在d705.判断质数(二)也用原本的程式碼並修改數值通關,但是到了這題卻怎樣都過不了QAQ
因為已使用建表卻還是TLE,因此我就試著改用cin改scanf , cout改printf竟然就AC了....,以下我就節錄main的部分(建表與判斷我都寫成自訂函數,且更改並未觸及)
1.完全使用C++----TLE
int main()
{ int x;
find_prime();
while(cin>>x)
{ if(x==0) break;
if(answer(x)) cout<<0<<endl;
else cout<<1<<endl;
}
return 0;
}
2.cin改scanf , cout改printf----AC(0.2s, 96KB)
int main()
{ int x;
find_prime();
while(scanf("%d",&x)!=EOF)
{ if(x==0) break;
if(answer(x)) printf("0\n");
else printf("1\n");
}
return 0;
}
3.將printf改回cout,但cout又分成輸出 "字串" 和輸出數字
"字串"版----AC(0.2s, 88KB)
int main()
{ int x;
find_prime();
while(scanf("%d",&x)!=EOF)
{ if(x==0) break;
if(answer(x)) cout<<"0\n";
else cout<<"1\n";
}
return 0;
}
數字版----TLE
int main()
{ int x;
find_prime();
while(scanf("%d",&x)!=EOF)
{ if(x==0) break;
if(answer(x)) cout<<0<<endl;
else cout<<1<<endl;
}
return 0;
}
4.將AC版之scanf又改回cin----TLE
int main()
{ int x;
find_prime();
while(cin>>x)
{ if(x==0) break;
if(answer(x)) cout<<"0\n";
else cout<<"1\n";
}
return 0;
}
最終結論:在輸入部分只有使用while(scanf("%d",&x)!=EOF)時才能AC , 而在輸出部分只有輸出"字串"才能AC , 並沒有cout與printf之分 , 但當cout直接輸
出數字卻會造成TLE , 請問有人知道為什麼嘛QAQ???
在a007.判斷質數吃了無數次TLE後,也學著用建表的方法過了,在d705.判断质数(二)也用原本的程式碼並修改數值通關,但是到了這題卻怎樣都過不了QAQ
因為已使用建表卻還是TLE,因此我就試著改用cin改scanf , cout改printf竟然就AC了....,以下我就節錄main的部分(建表與判斷我都寫成自訂函數,且更改並未觸及)
1.完全使用C++----TLE
int main()
{ int x;
find_prime();
while(cin>>x)
{ if(x==0) break;
if(answer(x)) cout<<0<<endl;
else cout<<1<<endl;
}
return 0;
}
2.cin改scanf , cout改printf----AC(0.2s, 96KB)
int main()
{ int x;
find_prime();
while(scanf("%d",&x)!=EOF)
{ if(x==0) break;
if(answer(x)) printf("0\n");
else printf("1\n");
}
return 0;
}
3.將printf改回cout,但cout又分成輸出 "字串" 和輸出數字
"字串"版----AC(0.2s, 88KB)
int main()
{ int x;
find_prime();
while(scanf("%d",&x)!=EOF)
{ if(x==0) break;
if(answer(x)) cout<<"0\n";
else cout<<"1\n";
}
return 0;
}
數字版----TLE
int main()
{ int x;
find_prime();
while(scanf("%d",&x)!=EOF)
{ if(x==0) break;
if(answer(x)) cout<<0<<endl;
else cout<<1<<endl;
}
return 0;
}
4.將AC版之scanf又改回cin----TLE
int main()
{ int x;
find_prime();
while(cin>>x)
{ if(x==0) break;
if(answer(x)) cout<<"0\n";
else cout<<"1\n";
}
return 0;
}
最終結論:在輸入部分只有使用while(scanf("%d",&x)!=EOF)時才能AC , 而在輸出部分只有輸出"字串"才能AC , 並沒有cout與printf之分 , 但當cout直接輸
出數字卻會造成TLE , 請問有人知道為什麼嘛QAQ???
cout比printf慢是因為cout與printf同步,若在程式碼加上ios::sync_with_stdio(false);以關掉同步,cout甚至比printf還快,但在程式中就只能使用cin,cout喔!