糖果

作者: qiqi 分类: 基本数论 发布时间: 2025-10-26 17:13

提交链接

题目描述:幼儿园里有 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;
}

提示:最多的小朋友不需要再给了。所有同学都和最多的小朋友进行比较。看需要给几次。累计求和。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云