链接: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 ",tem); else printf("%s is not cyclic ",tem); } return 0; }