C和C ++中执行时间的差异
我最近发现这个名为codechef的网站,您可以在其中提交问题解决方案。 我已经为一个问题提交了两个答案,一个在C中,另一个在C ++中。 两个代码几乎相同。 但是当我在C中提交的代码在4.89s中执行时,我在C ++中提交的代码超时(超过8秒)。 这怎么可能? 时间到了哪里?
问题是:
输入
输入以两个正整数nk(n,k <= 107)开始。 接下来的n行输入包含一个正整数ti,每个整数不大于10 ^ 9。
产量
写一个整数来输出,表示有多少整数ti可以被k整除。
Example Input: 7 3 1 51 966369 7 9 999996 11 Output: 4
我在C中的代码:
#include int main() { int n,k,t; scanf("%d %d",&n,&k); int i,num=0; for(i=0;i<n;i++) { scanf("%d",&t); if(t%k==0) num++; } printf("%d",num); return 0; }
我在C ++中的代码:
#include using namespace std; int main() { int n, k, t,num=0; cin>>n>>k; for(int i=0;i>t; if(t%k==0) num++; } cout<<num; return 0; }
尽管代码执行相同的操作,但代码并不完全相同
c ++版本默认使用比scanf等慢的cin和stream。
默认情况下,cin / cout浪费时间与C库的stdio缓冲区同步,这样你就可以自由地将对scanf / printf的调用与cin / cout上的操作混合。 您可以使用std::ios_base::sync_with_stdio(false);
将其关闭std::ios_base::sync_with_stdio(false);
通过这样做,所花费的时间或多或少与我期望的相似