求调
查看原帖
求调
793095
ZR_BL楼主2024/7/9 22:00
#include<bits/stdc++.h>
using namespace std;
const unsigned int N=10000007;
long long n,m,t,cnt=0,ans,tot;
unsigned long long sum1[1000015],sum2[1000015],p[1000015],f[1000015],a[2000015],x,q[1000015],q1[1000015];
int main(){
	cin>>n;
	p[0]=1;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		sum1[i]=(sum1[i-1]*19260817+a[i])%N;
		p[i]=(p[i-1]*19260817)%N;
	}
	for(int i=n;i>=1;i--){
		sum2[i]=(sum2[i+1]*19260817+a[i])%N;
	}
	for(int k=1;k<=n;k++){
		cnt=0;	
		for(int j=k;j<=n;j+=k){
			x=(sum1[j]-sum1[j-k]*p[k])%N;cout<<x<<"\n";
			if(f[x]==k)continue;
			f[x]=k;
			x=(sum2[j-k+1]-sum2[j+1]*p[k])%N;cout<<x<<"\n";
			f[x]=k;
			cnt++;
		}
		if(q1[tot]<cnt){
			q1[1]=cnt;
			q[1]=k;
			tot=1;
		}
		if(q1[tot]==cnt)q1[++tot]=cnt,q[tot]=k;
	}
	cout<<q1[tot]<<" "<<tot<<"\n";
	for(int i=1;i<=tot;i++)printf("%lld ",q[i]); 
	return 0;
}
2024/7/9 22:00
加载中...