1 solutions

  • 0
    @ 2025-11-5 16:25:52

    C++ :

    #include <cstdio>
    
    #define Maxn 1000003
    
    using namespace std;
    
    int n,a,b,c[Maxn],d[Maxn];
    int ans,f[Maxn]={0};
    
    inline void solve(int x)
    {
    	for(int i=1;i<=n;i++)
    	{
    		d[i]=c[i]%x;
    	}
    	f[2]=1; f[1]=1; f[0]=0;
    	for(int i=2;i<=n;i++)
    	{
    		int j=f[i];
    		while(j>1 && d[i]!=d[j]) j=f[j];
    		if(d[i]==d[j]) f[i+1]=j+1;
    		else f[i+1]=1;
    	}
    	if(n%(n-f[n])==0 && ans>n-f[n])
    	{
    		ans=n-f[n];
    	}
    }
    
    void init()
    {
    	scanf("%d%d%d",&n,&a,&b);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d",&c[i]);
    	}
    	ans=n;
    	solve(a);
    	solve(b);
    	if(ans<n) printf("%d\n",n/ans);
    	else printf("0\n");
    }
    
    int main()
    {
    	int T;
    	scanf("%d",&T);
    	for(int i=1;i<=T;i++)
    		init();
    	return 0;
    }
    
    
    • 1

    Information

    ID
    17773
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By