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;

using ll = int64_t;
int main(){
	ios_base::sync_with_stdio(false), cin.tie(nullptr);
	int N;
	cin >> N;
	vector<ll> A(N);
	for(auto& x : A) cin >> x;
	ll S = accumulate(A.begin(), A.end(), ll(0));
	set<ll> divs;
	for(ll d = 1; d * d <= S; d++){
		if(S % d == 0){
			divs.insert(d);
			divs.insert(S/d);
		}
	}
	vector<ll> A1(N+1);
	for(int i = 0; i < N; i++){
		A1[i] += A[i];
		A1[i+1] -= A[i];
	}
	ll ans = 0;
	for(ll d : divs){
		if(d > N) continue;
		bool ok = true;
		for(int i = 0; i <= N && i < d; i++){
			ll sum = 0;
			for(int j = i; j <= N; j += d){
				sum += A1[j];
				if(sum < 0) ok = false;
			}
			if(sum != 0) ok = false;
		}
		if(ok) ans = d;
	}
	cout << ans << '\n';
}