输入格式
输入包含多组测试样例,每组测试样例占一行。
每组样例包含一个由小写字母构成的字符串 s,s 的长度不超过 100,且不包含空格。
最后的测试样例后面将是一个点号作为一行。
输出格式
对于每一个 s,你需要输出最大的 n,使得存在一个字符串 a,让 s=a^n。
输入样例:
abcd
aaaa
ababab
.
输出样例:
1
4
3
难度:困难 |
时/空限制:1s / 64MB |
总通过数:12327 |
总尝试数:21677 |
来源:语法题 |
算法标签 |
分析:
求出输入的字符串的长度 枚举它的约数作为次方 如约数为4是可能是某个字符串的四次方
那么这个字符串的长度就是 len=a.size()/4
用substr(0,len)就可以把这个字符串找出来 把它拼到一个空字符串上n次与源字符串进行比较就可以判断是否符合条件
由于次方是越大越好 因此约数从大往小枚举
以下是代码
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { string a; while(cin>>a&&a!=".") { int s=a.size(); for(int i=s;i;i--) { if(s%i==0) { int m=s/i; string r; string b=a.substr(0,m); for(int j=0;j<i;j++) r+=b; if(r==a) { cout<<i<<endl; break; } } } } return 0; }