// 思路
无论操作几次(k),数组的总和sum不会改变。所以最后的数组元素的值
为sum / k;
从大到小枚举操作次数,如果sum % k != 0,说明是不可能的,否则再判
断:数组从前往后是否可以分为连续的几段,每一段和为sum / k.因为数组
元素是非负的,所以当某段元素值大于 sum / k时,即不可能。
#include<iostream>
using namespace std;constint N =3010;int sum[N];int a[N];intmain(){int t;
cin >> t;while(t --){int n;
cin >> n;
sum[0]=0;for(int i =1; i <= n; i ++){
cin >> a[i];
sum[i]= sum[i -1]+ a[i];}for(int i = n; i >=1; i --){if(sum[n]% i !=0)continue;int s = sum[n]/ i,t =0,flag =1;for(int j =1; j <= n; j ++){
t += a[j];if(t == s) t =0;if(t > s){
flag =0;break;}}if(flag){
cout << n - i << endl;break;}}}}