CF1686A 题解

题解 · 2023-08-26

题目意思

题目意思是给你 $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;
}
Theme Jasmine by Kent Liao