欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

1466:【例题2】Power Strings

时间:2024-06-15 22:39 作者:admin 点击:
#includebits/stdc++.husing namespace std;string s="abababc",t="aba";int nt[1000000];//vectorintvoid getnext(string t){nt[0]=-1;int i=0,j=nt[i];while(i=t.length())if(j==-1||t[i]==t[j]) nt[++i]=++j;else j=nt[j];}void find(string s,string t){i
#include<bits/stdc++.h>
using namespace std;
string s="abababc",t="aba";
int nt[1000000];//vector<int>
void getnext(string t){
	nt[0]=-1;
	int i=0,j=nt[i];
	while(i<=t.length())
		if(j==-1||t[i]==t[j]) nt[++i]=++j;
		else j=nt[j];
}
void find(string s,string t){
	int i=0,j=0;
	while(i<s.size()){
		while(j!=0&&s[i]!=t[j]) j=nt[j];
		if(s[i]==t[j]) j++;
		if(j==t.size()) cout<<i-j+1<<"\n";
		i++;
	}
}
int main(){
	while(cin>>s){
		memset(nt,0,sizeof(nt));
		if(s==".") break;
		getnext(s);
		int l=s.size(),l2=nt[l];
		if(l%(l-l2)!=0) cout<<1<<endl;
		else cout<<l/(l-l2)<<"\n";
	}
	return 0;
}


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%