acm hdu 1313 为什么提交是WA,但是测试的时候答案正确

#include<stdio.h>#include<string.h>intcompare(chara[],chard[],inti,intk){intj;for(j=0... #include<stdio.h>
#include<string.h>
int compare (char a[],char d[],int i,int k)
{
int j;

for(j=0;a[j];j++,i++)
if(d[i%k]!=a[j])
return 0;

return 1;
}
int main()
{
char a[61],d[61];
int b[61],c[61],i,j,k,m,flag;
while(scanf("%s",a)!=EOF)
{
k=strlen(a);flag=0;
for(i=0;a[i];i++)
{
b[i]=a[i]-'0';
}
for(m=1;m<k+1;m++)
{
for(i=0;i<k;i++)
c[i]=0;
for(j=k-1;j>=0;j--)
{
c[j]+=b[j]*m;
if(c[j]>=10)
{
c[j-1]=c[j]/10;
c[j]%=10;
d[j]=c[j]+'0';
}
else
d[j]=c[j]+'0';
}
d[k]='\0';
for(i=0;d[i];i++)
if(d[i]==a[0])
{
flag+=compare(a,d,i,k);
break;
}
}
if(flag==k)
printf("%s is cyclic\n",a);
else
printf("%s is not cyclic\n",a);
}
return 0;
}
展开
 我来答
mayao11
2011-07-31
知道答主
回答量:21
采纳率:0%
帮助的人:5.6万
展开全部
看acm的代码非常头大。给你两个建议:
1、严格观察输出,换行、空格之类
2、我看到你用了char,char类型在VC编译器里被认作unsigned char,在gcc编译器被认作signed char。acm的服务器一般都是用gcc的

这里你最好指定是signed还是unsigned
porker2008
推荐于2016-01-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include<stdio.h>
#include<string.h>
int compare (char a[],char d[],int i,int k)
{
int j;

for(j=0;a[j];j++,i++)
if(d[i%k]!=a[j])
return 0;

return 1;
}
int main()
{
char a[61],d[61];
int b[61],c[61],i,j,k,m,flag,temp;
while(scanf("%s",a)!=EOF)
{
k=strlen(a);flag=0;
for(i=0;a[i];i++)
{
b[i]=a[i]-'0';
}
for(m=1;m<k+1;m++)
{
for(i=0;i<k;i++)
c[i]=0;
for(j=k-1;j>=0;j--)
{
c[j]+=b[j]*m;
if(c[j]>=10)
{
c[j-1]=c[j]/10;
c[j]%=10;
d[j]=c[j]+'0';
}
else
d[j]=c[j]+'0';
}
d[k]='\0';
for(i=0;d[i];i++)
if(d[i]==a[0])
{
temp=compare(a,d,i,k);
if(temp) // 如果对比成功
{
flag++;
break; // 才能break啊
}
}
}
if(flag==k)
printf("%s is cyclic\n",a);
else
printf("%s is not cyclic\n",a);
}
return 0;
}
更多追问追答
追问
temp=compare(a,d,i,k);
if(temp) // 如果对比成功
{
flag++;
break; // 才能break啊
}
需要这么麻烦吗, flag+=compare(a,d,i,k);这样就不可以了,加零不是一样的效果
追答
问题不在于 flag+=compare(a,d,i,k)
问题在于如果compare返回的是0,你就不应该执行break
所以我把compare的结果存到了temp,如果temp是1,才执行break
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式