#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
vector<int>a(n);
long long sum=0;
for(auto &x:a)
cin>>x,sum+=x;
vector<long long>dziel;
for(int i=1;i<=sqrt(sum);i++){
if(sum%i==0){
dziel.push_back(i);
dziel.push_back(sum/i);
}
}
sort(dziel.begin(),dziel.end(),greater<long long>());
for(auto &x:dziel){
int cur=0;
bool flaga=true;
vector<int>b(n,0);
for(int i=0;i<n;i++){
if(cur>a[i])
flaga=false;
b[i]=a[i]-cur;
cur=a[i];
if(i-x+1>=0)
cur-=b[i-x+1];
}
if(cur!=0)
flaga=false;
if(flaga)
{
cout<<x;
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> using namespace std; int main(){ int n; cin>>n; vector<int>a(n); long long sum=0; for(auto &x:a) cin>>x,sum+=x; vector<long long>dziel; for(int i=1;i<=sqrt(sum);i++){ if(sum%i==0){ dziel.push_back(i); dziel.push_back(sum/i); } } sort(dziel.begin(),dziel.end(),greater<long long>()); for(auto &x:dziel){ int cur=0; bool flaga=true; vector<int>b(n,0); for(int i=0;i<n;i++){ if(cur>a[i]) flaga=false; b[i]=a[i]-cur; cur=a[i]; if(i-x+1>=0) cur-=b[i-x+1]; } if(cur!=0) flaga=false; if(flaga) { cout<<x; return 0; } } } |
English