WA求调
查看原帖
WA求调
656774
ZhangWeiYue0203楼主2024/11/10 12:35

思路

做前缀求字符串周期,如果是整数周期则输出周期数量,否则输出1


代码

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

vector<ll> piv;
string s;

vector<ll> pic(string s){
	ll len=s.length();
	vector<ll> res(len);
	res[0]=0;
	for(ll i=1;i<len;i++){
		ll j=res[i-1];
		while(j>0 && s[i]!=s[j]){
			j=res[j-1];
		}
		if(s[i]==s[j]){
			j++;
		}
		res[i]=j;
	}
	return res;
}

int main(){
	while(1){
		cin>>s;
		if(s=="."){
			break;
		}
		piv=pic(s);
		ll t;
		if(s.length()%(s.length()-piv[s.length()-1])==0){
			t=s.length()/(s.length()-piv[s.length()-1]);
		}else{
			t=1;
		}
		printf("%lld",t);
	}
	return 0;
}

评测记录

链接


感谢大佬

2024/11/10 12:35
加载中...