#835. 「POJ2406」Power Strings题解
题目描述
给定若干长度 ≤1000000 的字符串,询问每个字符串最多由多少个相同的子串重复连接而成。如ababab,最多由3个ab连接而成。
输入
输入包含若干字符,.结束输入。
输出
对于每个字符串,输出一个结果。
样例
样例输入1
abcd
aaaa
ababab
.
样例输出1
1
4
3
提示
使用scanf代替cin来避免超过时间限制。
思路
其实就是求整个字符串中有几个循环节,只需要先求出next数组,再运用公式if(len%(len-next[len]==0)就说明是有解的,输出(len/(len-next[len]))即是答案,如果无解那么就输出0
CODE~~(这是究极压行版本~~
#include<bits/stdc++.h>
char s[999999];
int e[999999];
main() {
while(std::cin>>s,s[0]!='.') {
int l=strlen(s),i=0