糖果
题目描述:幼儿园里有 n 个小朋友,第 i 个小朋友最开始有 ai个糖果。幼儿园老师可以进行无限次操作,每次操作选择一个小朋友,并给他 k 个糖果。为了避免小朋友因为愤怒而吃掉别的小朋友的糖果,幼儿园老师希望所有小朋友的糖果数量相同。若她的目标可以达成,输出 YES 和她最少的操作次数;若不可以,则直接输出 NO。
#include <bits/stdc++.h>
using namespace std;
int x[100010];
int main()
{
long long ans = 0;
int n, k, maxCandy;
int *p;
bool flag = true;
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++)
scanf("%d", x + i);
p = max_element(x, x + n);
maxCandy = *p;
for (int i = 0; i < n; i++)
{
if ( (maxCandy - x[i]) % k == 0 )
ans += (maxCandy - x[i]) / k;
else
{
flag = false;
break;
}
}
if (flag)
printf("YES %lld\n", ans);
else
printf("NO\n");
return 0;
}提示:最多的小朋友不需要再给了。所有同学都和最多的小朋友进行比较。看需要给几次。累计求和。
