AcWing 777. 字符串乘方
原题链接
困难
作者:
chais
,
2023-11-02 11:57:37
,
所有人可见
,
阅读 56
#include<iostream>
using namespace std;
int main()
{
string s;
while(1)
{
cin>>s;
if(s[0]=='.')
break;
int n=0;
string ziduan;
int l=0;
int size=s.length();
for(int i=0;i<size;i++)//每一轮循环给字段添加一个字母
{
ziduan+=s[i];
l++;
int pos=0;
int pos2=-l;
int isprime=1;
n=0;
while(pos<size)//检测两个字段之间是否挨着
{
int num=s.find(ziduan,pos);
if(num-pos2==l)//寻找下一个字段的位置,并检测是否与上一个字段的差等于字段长度
{
n++;
pos+=l;
pos2+=l;
}
else
{
isprime=0;//非重复字段而结束的循环标记
break;
}
}
if(isprime==1)//一旦每一段都重复,则字段越小,n越大
{
cout<<n<<endl;
break;
}
}
}
return 0;
}