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
39
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
constexpr int N=1e5+5;

#define gc getchar_unlocked
#define pc putchar_unlocked
inline int read(){
    int x=0; char c=gc();
    while(!isdigit(c))c=gc();
    while(isdigit(c))x=x*10+c-'0',c=gc();
    return x;
}
void write(const int x){
    if(x>9)write(x/10);
    pc(x%10+'0');
}

int n,a[N],b[N],c[N];

int main(){
    n=read();
    for(int i=1;i<=n;i++)a[i]=read();
    ll s=accumulate(a+1,a+1+n,0ll);
    for(int d=n;d;d--)if(s%d==0){
        fill_n(b+1,n+1,0),fill_n(c+1,n+1,0);
        bool flag=1;
        for(int i=1;i<=n;i++){
            c[i]+=c[i-1];
            if(c[i]>a[i]){flag=0;break;}
            if(c[i]==a[i])continue;
            if(i+d-1>n){flag=0;break;}
            const int x=a[i]-c[i];
            c[i+d]-=x,c[i]+=x;
        }
        if(flag)return printf("%d\n",d),0;
    }
    return 0;
}