AcWing 777. 字符串乘方
原题链接
困难
作者:
无虞forever
,
2024-01-02 11:59:32
,
所有人可见
,
阅读 34
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int cnt;
string s;
while(cin >> s){
if(s != "."){
cnt = 100;
//cnt指代为题目中的n n最大为100 i为偏移量 j为访问到的当前元素
for(int i = 1; i < s.size() ; i++){
bool flag = true;
if(s.size() % i != 0) continue;
//题意易得为将字符串划分为相等的n段 每段长度为i 则恒有s[j] == s[i + j]
for(int j = 0; j < s.size() - i ; j++){
if(s[j] != s[j + i]) flag = false;
}
cnt = flag == true ? min(cnt , i) : cnt;
}
//此处可以再完善一下 当数组只能被划分为一段时 如何判断
cnt = cnt == 100 ? s.size() : cnt;
cout << (int) s.size() / cnt << endl;
}else return 0;
}
}