1 solutions
-
0
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