链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=73
高精度乘法。一次乘以2~len,再判断是否是原字符串的一个cut-string
有一个函数叫strstr()..用上能精简很多代码。。
#include<stdio.h>
#include<string.h>
char tem[80];
bool hpm(void)
{
char rostr[200];
char temp[80];
strcpy(temp,tem);
int i;
int j;
char t;
bool ans=true;
int sign=0;
int len=strlen(temp);
for(i=2;i<=len;i++) //从2乘到len
{
for(j=len-1;j>=0;j--) //高精度乘法
{
t=tem[j];
temp[j]=( (tem[j]-'0')*i+sign)%10+'0';
sign=((t-'0')*i+sign)/10;
}
strcpy(rostr,temp);
strcpy(rostr+len,temp);
if(strstr(rostr,tem)==NULL)
ans=false;
}
return ans;
}
int main()
{
while(scanf("%s",tem)!=EOF)
{
if(hpm())
printf("%s is cyclic\n",tem);
else
printf("%s is not cyclic\n",tem);
}
return 0;
}