OJ1005——周期串

题目描述
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如abcabc以3为周期(当然他也以6,12为周期)。输入一个长度不超过80的串,输出他的最小周期。
输入
多组测试数据,每组仅一行为一个仅有大写字母组成的字符串。
输出
对于每组数据输出该字符串的最小周期。
样例输入 Copy
HOHO
样例输出 Copy
2

以下是我的代码,最终判错错误率83%,请众神们指点问题出在哪里啦

#include
#include
using namespace std;
int main()
{
    char s[80];
    while (cin >> s)
    {
        int len = strlen(s);
        bool f1 = false;
        for (int k = 0;kif (s[k] < 'A' || s[k]>'Z')
            {
                f1 = true;
                break;
            }
        }
        if (f1)
            continue;
        for (int i = 1; i <= len; i++)
        {
            bool f2 = true;
            for(int j=i;jif (s[j] != s[j % i])
                {
                    f2 = false;
                    break;
                }
            if (f2)
            {
                cout << i << endl;
                break;
            }
        }
    }

    return 0;
}

问题已解决,缺少一个判断条件:字符串长度要能整除周期

感觉你写的好复杂啊,直接输入一个字符串,最小周期子串长度是要求字符串长度的因子,根据因子循环遍历,看符不符合要求就好了