AcWing 777. 字符串乘方
原题链接
简单
作者:
Saber__
,
2024-10-29 09:41:35
,
所有人可见
,
阅读 2
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
while(cin >> str, str != ".")
{
int len = str.size();
//枚举n,从后往前找符合约数要求的子串
//不相等,从后往前找符合要求的n,例如abababab 次方n = 8,4,2,1
for(int n = len; n; n--)
//几次方一定是len的约数
if(len % n == 0)
{ //每个子串的长度
//是n次方,相除可得每个子串的长度
int m = len / n;
string s = str.substr(0,m);
//把子串拼n次,再与str比较
string r;
for(int i = 0; i<n; i++) r += s;
//相等,子串拼接n次与str相等。
//说明该子串是str的n次方
if(r == str)
{
cout << n << endl;
break;
}
}
}
return 0;
}