1 solutions
-
0
C++ :
#include<bits/stdc++.h> using namespace std; int r,n,a[3005],aa[3005]; int f(int x) { int summ=0; for(int i=1;i<=n;i++) aa[i]=a[i]; for(int i=1;i<=n;) { if(aa[i]==x) i++; else if(aa[i]>x) return 30000; else if(aa[i]<x) aa[i+1]+=aa[i],i++,summ++; // cout<<i<<" "<<summ<<endl; } // cout<<x<<" "<<summ<<endl; return summ; } int main() { cin>>r; while(r--) { cin>>n; int sum=0,bj=0; for(int i=1;i<=n;i++) { cin>>a[i];//a数组是数据 if(i>1 && a[i]!=a[i-1]) bj=1; sum+=a[i]; } if(bj==0) {cout<<0<<endl;continue;} int t=0,b[1002]; fill(b,b+1000,0); for(int i=1;i*i<=sum;i++) if(sum%i==0) b[++t]=i,b[++t]=sum/i; sort(b+1,b+1+t);//b数组是约数 int tmp,ans=n; // f(6); for(int i=1;i<=t;i++) { if(sum/b[i]>n) continue; int tmp=f(b[i]); ans=min(ans,tmp); } cout<<ans<<endl; } return 0; }
- 1
Information
- ID
- 939
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By