找循环节,并不难,但分析的时候不能漏了如果没有循环的情况。另外还是输入输出,两个输入之间有空行,所以最好不要用%c,用%s或者直接用string类,输出是两个输出之间有空行,最后一个输出不能有。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int len;
int conting(int x) { //判断是否循环,同时要注意如果它没循环就是len
for (int i = 0; i < x; i++) {
for (int j = i + x; j < len; j += x) //跳跃着判断,判断每个循环节的这个字母是否相等
if (s[i] != s[j]) return 0;
}
return x;
}
int main() {
int t;
cin >> t;
while (t--) {
cin >> s;
int ans = 0;
len = s.length();
for (int i = 1; i <= len; i++) {
if (len % i == 0) ans = conting(i); //如果len能被i整除,就有可能是循环节,进行判断
if (ans) break;
}
printf("%d\n", ans);
if(t) printf("\n");
}
return 0;
}