#6WA求调(玄关)
查看原帖
#6WA求调(玄关)
1007282
hehaorui楼主2024/5/26 15:33
#include<bits/stdc++.h>
using namespace std;
long long read()
{
	char a;
	long long sum=0;
	while(a<'0'||a>'9')
		a=getchar();
	while(a>='0'&&a<='9')
		sum=sum*10+a-'0',a=getchar();
	return sum;
}
int t;
int n;
long long a[100005];
long long ans=1;
long long f[100005];
bool b[100005];
int top=1;
int main()
{
//	freopen("qwq.in","r",stdin);
	t=read();
	int top=1;
	for(long long i=2;i<=100000;i++)
		if(!b[i])
		{
//			cout<<i<<',';
			f[top++]=i;
			for(long long j=i*i;j<=100000;j+=i)
				b[j]=1;
		}		
	while(t--)
	{
		ans=1;
		n=read();
		for(int i=1;i<=n;i++)
		{
			a[i]=read();
		}
		/*
1
10
1 7 5 1 4 3 1 3 1 4
		*/
		for(int k=1;k<=sqrt(n);k++)
		{
			if(!(n%k))
			{
				int op=n/k;
//				cout<<"op="<<op<<endl;
				for(int i=1;f[i]<=n;i++)
				{
					bool p=0;
//					cout<<"k="<<k<<endl;
					for(int now=1;now<=k;now++)
					{
						bool flag=0;
						int res=a[now]%f[i];
//						cout<<"res="<<res<<endl;
						for(int j=now+k;j<=n;j+=k)
							if(a[j]%f[i]!=res)
							{
//								cout<<"j="<<j<<endl;
								flag=1;
								break;
							}
						if(flag)
						{
							p=1;
							break;
						}
					}
					if(!p)
					{
//						cout<<"      "<<k<<endl;
						ans++;
						break;
					}
				}
				if(op==k||op==n)
					continue;
				for(int i=1;f[i]<=n;i++)
				{
					bool p=0;
					for(int now=1;now<=op;now++)
					{
						bool flag=0;
						int res=a[now]%f[i];
						for(int j=now+op;j<=n;j+=op)
							if(a[j]%f[i]!=res)
							{
								flag=1;
								break;
							}
						if(flag)
						{
							p=1;
							break;
						}
					}
					if(!p)
					{
//						cout<<"      "<<op<<endl;
						ans++;
						break;
					}
				}
			}
		}
		cout<<ans<<endl;
	}
}
2024/5/26 15:33
加载中...