1 solutions

  • 0
    @ 2025-12-3 16:59:04

    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