题目意思
题目意思是给你 $n$ 个元素的序列,
要你判断执行若干次操作后,整个序列是否能够全部相等。
对于每次操作的定义:
每次操作选择 $n-1$ 个元素,把它们全部变成这 $n-1$ 个元素的平均值。
思路
先来考虑是否可以经过一次操作就能使序列全部相等。
很简单,看看那 $n-1$ 个元素的平均值是否等于剩下一个元素。
那么如果一次操作完成不了呢?
其实一次操作完成不了的话,用多少次操作都完成不了。
因为一次操作只改变了每个数,但数组和没有改变。
最后贴上代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int t,n,a[55];
int main(){
scanf("%d",&t);
while(t--){
bool flag=0;
scanf("%d",&n);int sum=0;
for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum+=a[i];
for(int i=1;i<=n;i++){
if((double)(sum-a[i])/(n-1)==a[i])flag=1;
}
if(flag)printf("YES\n");
else printf("NO\n");
}
return 0;
}