我正在解决一个关于spoj的问题,并且当我使用unsigned long long而得到了TLE,而当我使用long long时它被接受了。
以下是问题的链接。Click Here
有人可以告诉原因。
答案 0 :(得分:0)
我认为使用unsigned long long
时获得TLE的可能原因是因为问题提到输入的结尾应该是-1
,所以当您尝试存储-1
时1}}在unsigned long long
中,它将被存储为正数(类似于此http://ideone.com/r4Pvp0)。因此,用于输入用户输入的循环永远不会结束,因为您永远不会遇到负数,因此也不会遇到TLE。
类似于你的案例::
int main() {
unsigned int a = -10;
if(a < 0)
cout << "Hello";
else
cout << "Bye";
return 0;
}
只需使用int a
即可打印Hello
,但使用unsigned int
将其固定,输出将为Bye
。请参阅:: http://ideone.com/99qq2U
如果您想使用long long
结束用户输入,那么您必须坚持-1
。