一样的糖果
题目描述
有 nn 个盒子,每个盒子有一定数量的糖果,第 ii 个盒子里有 aiai 糖果。
你还有 nn 个朋友,你想把糖果送给他们,所以你决定给每个朋友一盒糖果。但是,你不想让任何朋友生气,所以你决定从每个盒子里吃一些(也可能为 0
)糖果,这样所有盒子里剩余的糖果数量都一样。注意,你可能会从不同的盒子里吃不同数量的糖果,你不能在任何盒子里添加糖果。
你最少需要吃多少糖果才能满足要求?
输入格式
第一行包含整数 t(1≤t≤1000)t(1≤t≤1000) 表示测试用例数。
每个测试用例的第一行包含一个整数 n(1≤n≤50)n(1≤n≤50) 表示您拥有的盒子数量。
每个测试用例的第二行包含 nn 个整数 a1,a2,…,an(1≤ai≤107)a1,a2,…,an(1≤ai≤107) 表示每个盒子中的糖果数量。
输出格式
对于每个测试用例,输出一个整数,表示满足要求所需的最少糖果数量。
测试样例
输入数据 1
5
5
1 2 3 4 5
6
1000 1000 5 1000 1000 1000
10
1 2 3 5 1 2 7 9 13 5
3
8 8 8
1
10000000
输出数据 1
10
4975
38
0
0
样例说明
对于第一个测试案例,你可以从第二个盒子吃 11 颗糖,从第三个盒子里吃 22 颗糖,从第四个盒子里吃 33 颗糖,以及从第五个盒子里吃 44 颗糖。现在盒子里有 [1,1,1,1][1,1,1,1] 个糖果,你总共吃了 0+1+2+3+4=100+1+2+3+4=10 个糖果,所以答案是 1010。
对于第二个测试案例,最好的答案是让所有盒子中都包含 55 颗糖果,从而总共吃掉 995+995+0+995+995+995=4975995+995+0+995+995+995=4975 颗糖果。
代码示例
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main()
{int n = 0;cin >> n;for (int i = 0; i < n; i++){int num = 0;cin >> num;int arr[51];for (int o = 0; o < num; o++){cin >> arr[o];}sort(arr,arr+num);int sum = 0;int one = arr[0];for (int o = 0; o < num; o++){sum += arr[o] - one;}cout << sum << endl;}return 0;
}