C语言编程练习11:幂字符串
题目描述
给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。
例如:abcd=(abcd)^1,则n=1;
aaaa=a^4,则n=4;
ababab=(ab)^3,则n=3。
例如:abcd=(abcd)^1,则n=1;
aaaa=a^4,则n=4;
ababab=(ab)^3,则n=3。
输入
输入包含多组测试数据。每组输入为一个字符串,长度不超过100,其中不包含空格等空白符。当输入为一个“.”时,输入结束。
输出
对于每组输入,输出将此字符串转化成a^n形式的最大的n。
样例输入 Copy
abcd
aaaa
ababab
.
样例输出 Copy
1
4
3
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char s[110];
int len = 0;
int cnt = 1;
while(cin>>s){
if(!strcmp(s, ".")){ //注意啊!!!不能s[0] == '.'
break;
}
len = strlen(s);
for(int i=len; i>=1; i--){
if(len % i == 0){//说明原串是由 len/i 个子串合并的
int j = 0;
for(j=i; j<len; j++){
if(s[j]!=s[j%i]){//匹配失败
break;
}
}
if(j>=len){//完成上述循环,未出现匹配失败的情况,即匹配成功
cnt = len/i;
}
}
}
cout<<cnt<<endl;
}
return 0;
}
代码转自:https://blog.csdn.net/Servon_Lee/article/details/78628979

浙公网安备 33010602011771号