http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1905 很DT的说。。。没有看到原来Input后是有“.”的!!!靠! #include<stdio.h> #include<string.h> char str[1000001]; int main() { while(scanf("%s",str)!=EOF) { if(str[0]=='.')break; int len=strlen(str); int i,j,find; for(i=1;i<=len;i++) { if(len%i!=0)continue;//不能整除就continue,避免检查多余的情况 for(j=i,find=1;j<len;j++) { if(str[j]!=str[j%i]) { find=0; break; } } if(find) break; } printf("%d/n",len/i); } return 0; }