WA求调
查看原帖
WA求调
1236488
JIIING楼主2024/7/9 20:49
	
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
ULL n,m,x,y,tot;
int a,b=47;
ULL sum[10000086],power[10000086];
int main()
{
	char s[1700086];
	power[0]=1;
	for(int i=1;i<=1000008;i++)
	power[i]=power[i-1]*b;
	while(cin>>s)
 	{
 		if(s[0]=='.')break;
 		int len=strlen(s);
 		sum[0]=(ULL)(s[0]-'A'+1);
// 		int k=(ULL)(s[0]-'A'+1);
 		for(int i=1;i<len;i++)
 		{
 			sum[i]=sum[i-1]*b+(ULL)(s[i]-'A'+1);
// 			k=k*b+(ULL)(s[i]-'A'+1);
		 }
//		 cout<<k<<endl;
//		 for(int i=0;i<len;i++)
//		 cout<<sum[i]<<" ";
//		 cout<<endl;
		 
		 for(int i=1;i<=len;i++)
		 {
		 	
			if(len%(i)!=0)continue;
			tot=0;
			for(int j=0;j<i;j++)
			{
				tot=tot*b+(ULL)(s[j]-'A'+1);
			}
//			cout<<tot<<endl;
			bool flag=true;
			int ans=1;
			for(int j=0;j<len-i;j++)
			{
//				cout<<ans<<endl;	
//			cout<<sum[j+i]<<" "<<sum[j]<<" "<<power[i]<<endl;
//			cout<<sum[j+i] - sum[j]*power[i]<<endl;
				if(tot==sum[j+i] - sum[j]*power[i])ans++;	
			}
		if(ans==len/i)
			{
			cout<<ans<<endl;
			break;
		 	}
		 }
		 
	}
 	
 	
 	
 	 return 0;
}
2024/7/9 20:49
加载中...