【发布时间】:2017-06-02 14:25:09
【问题描述】:
#include <iostream>
using namespace std;
int main(){
int t;
long long int n,res,x;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
res=0;
for(int i=0;i<n;i++){
scanf("%lld",&x);
res^=x;
}
if(res==0)
printf("-1\n");
else
printf("%lld\n",res);
}
return 0;
}
当我使用 cin 和 cout 时,这个相同的程序在hackerearth 中超时。但通过 scanf 和 printf。
【问题讨论】:
-
std::cout << std::endl;正在做flush()。使用std::cout << '\n';并再次检查时间。 -
ostream/istream 与 printf/scanf 有一个共同点,那就是它们都是非常慢且开销很大的函数。您不应该假设其中任何一个都很快,也不能轻易知道在给定场景下 ostream 实现是比 printf 快还是慢。
-
@Nick 虽然我同意避免使用
std::endl,但cout通常是行缓冲的。虽然在这种情况下可能不是,但这取决于hackerearth 如何处理输出。