感性理解:n-1堆石头,均分一定与%n有关。(先这么想着。。。)
设ai,aj为任意两堆石头,Oi表示拿走的次数,Ii表示拿入的次数
若可以均分,则可以得出两个式子:
ai+Ii(n-1)-Oi=sum/n;
aj+Ij(n-1)-Oj=sum/n;
所以不难看出 ai%n==aj%n(这是一个必要条件,可以用来证伪)

接下来我们想,在必要条件下,什么情况可能是错的
1 1 1 5 ————移动时会出现0 0 3 5 有两个0,所以错。
继续推广,还有什么可能出现两个0。
2 2 2 2 m ————m是一个很大的数且满足上面那个必要条件。
移动后会出现0 0 4 4 m-2 也不行
所以我们可以看出————对于一个排好序的数列,若a[i]<i-1 则会出现两个及以上的0。

所以代码为:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[105];
bool ok()
{
int t=a[1];
for(int i=2;i<=n;i++)
if(t!=a[i])
break;
else if(i==n&&a[i]==t)
return true;
sort(a+1,a+1+n);
t=a[1]%n;
for(int i=2;i<=n;i++)
if(a[i]%n!=t)
return false;
for(int i=1;i<=n;i++)
if(a[i]<i-1)
return false;
return true;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
if(ok())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}