#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
ll a[100100];
ll mem[100100];
ll n;
bool check(ll x) {
for(int i = 0; i < x; i++) {
mem[i] = 0;
}
ll sum = 0;
for(int i = 0; i < n; i++) {
sum = sum - mem[i % x];
ll add = a[i] - sum;
sum += add;
if (add < 0) return false;
mem[i % x] = add;
}
return sum == mem[n % x];
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
ll sum = 0;
for(int i = 0; i < n; i++) {
cin >> a[i];
sum+=a[i];
}
for(int i = n; i >= 1; i--) {
if (sum % i == 0 && check(i)) {
cout << 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 39 40 41 42 43 44 45 46 47 48 49 | #include <iostream> #include <vector> using namespace std; using ll = long long; ll a[100100]; ll mem[100100]; ll n; bool check(ll x) { for(int i = 0; i < x; i++) { mem[i] = 0; } ll sum = 0; for(int i = 0; i < n; i++) { sum = sum - mem[i % x]; ll add = a[i] - sum; sum += add; if (add < 0) return false; mem[i % x] = add; } return sum == mem[n % x]; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; ll sum = 0; for(int i = 0; i < n; i++) { cin >> a[i]; sum+=a[i]; } for(int i = n; i >= 1; i--) { if (sum % i == 0 && check(i)) { cout << i; return 0; } } } |
English