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