【发布时间】:2015-02-16 13:48:54
【问题描述】:
问题描述可以在Here找到。我的程序正在生成与示例测试用例匹配的输出,但是当遇到大整数时,程序会崩溃,我无法找出原因。当用户提供的数据类似于 a:=252509054433933447 b:=760713016476190629 时,程序要么停止响应,要么我收到 SIGABRT 错误,或者处理 1 个输入文件的时间超过了最大分配时间。我的代码有什么问题?有人可以建议一个更好的算法来做到这一点吗?请帮我找出错误。
#include<stdio.h>
#include<string.h>
int main()
{
long long int a,b,input,len,len1,len2;
char dem[1000];
char temp[100000];
scanf("%s",dem);
scanf("%u",&input);
len=strlen(dem);
for(unsigned int i=0;i<input;i++)
{
scanf("\n%lld %lld",&a,&b);
if(b>len)
{
len1=b/len;
for(unsigned int j=1;j<=((len1+1));j++)
{
strcat(temp,dem);
}
}
else
{
if(dem[a-1]==dem[b-1])
{
printf("\nYes");
}
else
{
printf("\nNo");
}
}
len2=strlen(temp);
if(len2!=0)
{
if(temp[a-1]==temp[b-1])
{
printf("\nYes");
}
else
{
printf("\nNo");
}
}
}
}
【问题讨论】:
-
%uforlong long int? -
是的,这是一个错误,但不要认为它与 SIGABRT 错误或超出时间限制的输出有关。
标签: c algorithm runtime-error time-complexity