我最近发现了这个名为 codechef 的网站,您可以在其中提交问题的解决方案。
我为一个问题提交了两个答案,一个用 C 语言,另一个用 C++ 语言。两个代码几乎相同。但是当我用C提交的代码在4.89s执行时,我用C++提交的代码超时了(超过8秒)。这怎么可能?时间都去哪儿了?
问题是:
Input
输入以两个正整数 n k (n, k
Output
将单个整数写入输出,表示有多少个整数 ti 可以被 k 整除。
Example
Input:
7 3
1
51
966369
7
9
999996
11
Output:
4
我的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;
}
我的 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;
}
尽管它们做同样的事情,但代码并不完全相同
C++版本默认使用cin和streams,它们比scanf等慢。
默认情况下,cin/cout 浪费时间与 C 库的 stdio 缓冲区同步,这样您就可以自由地将 scanf/printf 调用与 cin/cout 操作混合在一起。您可以使用以下命令关闭此功能std::ios_base::sync_with_stdio(false);
通过这样做,所花费的时间或多或少会与我期望的相似
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)