P11371 题解

· · 题解

题目传送门

思路

为了使其操作次数最少,应该把所有的小朋友的糖果数都增加为糖果最多的小朋友的糖果数。设 m 为序列 a 中的最大值。若 (m-a_i)\bmod k\ne 0,则无论怎么添加糖果都无法使所有的糖果数相等;否则统计 \frac{m-a_i}{k} 的总和。

注意事项

AC CODE


#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){int x=0;char f=1,ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
const int N=1e5+10;
int a[N];
signed main(){
    int n=read(),k=read(),m=0;
    for(int i=1;i<=n;++i){
        a[i]=read();
        m=max(m,a[i]);
    }
    int ans=0;
    for(int i=1;i<=n;++i)
        if((m-a[i])%k)
            return printf("NO\n"),0;
        else ans+=(m-a[i])/k;
    printf("YES %lld\n",ans);
    return 0;
}