#include <bits/stdc++.h>
#define LL long long
int N,a[100009],b[100009];
signed main(void) {
scanf("%d",&N);
LL su=0;
for(int i=1;i<=N;i++) {
scanf("%d",&a[i]);
b[i]=a[i]-a[i-1];
su+=a[i];
}
for(int i=N;i>=1;i--) {
if(su%i) continue;
bool gg=0;
for(int j=1;j<=i;j++) {
int p=j;
LL su=0;
while(p<=N) {
su+=b[p];
if(su<0||p+i>N) break;
p+=i;
}
if(su<0) {
gg=1;
break;
}
if(p>=N-i+2&&su!=0) {
gg=1;
break;
}
}
if(!gg) {
printf("%d",i);
return 0;
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <bits/stdc++.h> #define LL long long int N,a[100009],b[100009]; signed main(void) { scanf("%d",&N); LL su=0; for(int i=1;i<=N;i++) { scanf("%d",&a[i]); b[i]=a[i]-a[i-1]; su+=a[i]; } for(int i=N;i>=1;i--) { if(su%i) continue; bool gg=0; for(int j=1;j<=i;j++) { int p=j; LL su=0; while(p<=N) { su+=b[p]; if(su<0||p+i>N) break; p+=i; } if(su<0) { gg=1; break; } if(p>=N-i+2&&su!=0) { gg=1; break; } } if(!gg) { printf("%d",i); return 0; } } } |
English