湖南工学院ACM2021级期末测试---B题《简单的思维题》

 题面如上。

求该数组需要加入多少个数可以使整个数组的平均值恰好为1。

首先,很明显只有三种情况。

1.已经满足平均值为1。

2.平均值大于1。

3.平均值小于1。

对于情况1来说,我们无需添加任何数都可以满足条件,因此为0。

对于情况2来说,假如数组总和为5,一共有3个元素,其平均值明显不为1,这个时候我们需要加入一些数字进去,很显然如果我们加入比0大的数字的话会使得总和继续变大,总和一旦变大那么所需要的元素数也会增大,因此我们每次加入数字只加入数字0,那么就可以固定总和,来增加元素数,在这个例子中,我们加入2个0,那么总和为5不变,元素从3个加到了5个,平均值为1。故添加数为2。

对于情况3来说,假如数组总和为5,一共有7个元素,那么我们就需要增加他的总和,很明显我们加入一个数字3,那么总和为8,元素数从7加到了8个,平均值为1。因此,对于情况3,我们只需要加入一个数字就可以满足条件,该数字的大小为 元素数 - 当前总和 + 1。故添加数为1。

#include<bits/stdc++.h>
using namespace std;
int a[100001];
int main() {
	int t;
	cin >> t;
	while (t--) {
		int n;
		cin >> n;
		long long sum = 0;
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
			sum += a[i];
		}
		if (sum > n) {
			cout << sum - n << endl;
		}
		else if (sum < n) {
			cout << 1 << endl;
		}
		else if (sum / n == 1) {
			cout << 0 << endl;
		}
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值