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);

通过这样做,所花费的时间或多或少与我期望的相似