Power Strings

Power Strings

题意

求最大的循环节

代码

如果是循环的,也就是S=TTTTT
那么ne[i]=TTTT,所以也就是前面的那一段长度。
如果不相同,也就是abc,那么%的话,一定时为0的,妙

代码

#include <bits/stdc++.h>
using namespace std;
const int M=1e6+5;
int ne[M];
char s[M];
void init(char *s) {
int len=strlen(s+1);
for(int i=2,j=0;i<=len;i++) {
while(j&&s[i]!=s[j+1])j=ne[i];
if(s[i]==s[j+1])j++;
ne[i]=j;
}
}
int main() {
while(scanf("%s",s+1)!=-1) {
init(s);
int len=strlen(s+1);
if(len%(len-ne[len])==0)cout<<len/(len-ne[len])<<'\n';
else cout<<"1\n";
}
return 0;
}
//但是循环节是不能重叠的
posted @   basicecho  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示