字符串乘方
给定两个字符串a和b,我们定义ab为他们的连接。
例如,如果a=”abc” 而b=”def”, 则ab=”abcdef”。
如果我们将连接考虑成乘法,一个非负整数的乘方将用一种通常的方式定义:a0=””(空字符串),a(n+1)=a∗(an)。
输入格式
输入包含多组测试样例,每组测试样例占一行。
每组样例包含一个字符串s,s的长度不超过100。
最后的测试样例后面将是一个点号作为一行。
输出格式
对于每一个s,你需要输出最大的n,使得存在一个字符串a,让s=an。
输入样例:
abcd
aaaa
ababab
.
输出样例:
1
4
3
本题思路:每次取子串连接而成后判断是否相等
#include<iostream>
using namespace std;
string m;
int f(string a)
{
bool flag=false;
int ans;
for(int i=1;i<=a.size()&&!flag;i++)
{
string b=a.substr(0,i);
string res="";
if(a.size()%i==0)
{
for(int j=0;j<a.size()/i;j++)
res+=b;
if(res==a)
{
ans=a.size()/i;
flag=true;
}
}
}
return ans;
}
int main()
{
while(cin>> m,m!=".")
printf("%d\n",f(m));
return 0;
}