这题把我虐哭了。
提交了13次才ac。
算法本身没什么好说的,UVa上html版和pdf版的输入输出格式要求不一样,以html版为准。
而且html版的输入输出格式都有点奇葩,不认真看原文细节是ac不了的。
严重感谢这篇博文的作者习题 3-4 周期串
参考了他的例程,我才找到问题的解决办法。
UVa评测系统中的空行不是'\n',没有他的getchar()我还不知道多久才能找出并解决问题。
#include<stdio.h>
#include<string.h>
char s[85];
int main()
{
int k,len,zhouqi,T;
scanf("%d",&T);
scanf("%d");
while(T--)
{
scanf("%s", s);
scanf("%d");
len = strlen(s);
k=0;
for(int i = 0; i < len/2+1; i++)
{
k++;
if(len%k == 0)
{
zhouqi=1;
for(int j = 0; j < k; j++)
{
for(int l = k; l+k <= len; l+=k)
{
//printf("1 k%d j%d l%d zhouqi%d\n",k,j,l,zhouqi);
if(s[j]!=s[l+j]){zhouqi = 0;break;}
//printf("2 k%d j%d l%d zhouqi%d\n",k,j,l,zhouqi);
}
if(!zhouqi)break;
}
}
if(zhouqi) break;
}
if(!zhouqi) k = len;
//printf("%d",len);
if(T) printf("%d\n\n",k);
else printf("%d\n",k);
}
}