在未签名的情况下TLE

时间:2016-01-17 14:56:43

标签: time types

我正在解决一个关于spoj的问题,并且当我使用unsigned long long而得到了TLE,而当我使用long long时它被接受了。

以下是问题的链接。Click Here

有人可以告诉原因。

1 个答案:

答案 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