C和C++中执行时间的差异

arr*_*y36 8 c c++ executiontimeout

我最近发现这个名为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
Run Code Online (Sandbox Code Playgroud)

我在C中的代码:

 #include<stdio.h>

 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;
 }
Run Code Online (Sandbox Code Playgroud)

我在C++中的代码:

 #include<iostream>

 using namespace std;

 int main()  {

   int n, k, t,num=0;
   cin>>n>>k;
   for(int i=0;i<n;i++)  {
     cin>>t;
     if(t%k==0)  num++;
   }

   cout<<num;
   return 0;
 } 
Run Code Online (Sandbox Code Playgroud)

con*_*ref 28

尽管代码执行相同的操作,但代码并不完全相同

c ++版本默认使用比scanf等慢的cin和stream.

默认情况下,cin/cout浪费时间与C库的stdio缓冲区同步,这样你就可以自由地将对scanf/printf的调用与cin/cout上的操作混合.你可以关闭它std::ios_base::sync_with_stdio(false);

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

  • 谢谢!这对我来说是一个新信息. (2认同)