time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Polycarp has nn friends, the ii-th of his friends has aiai candies. Polycarp's friends do not like when they have different numbers of candies. In other words they want all aiai to be the same. To solve this, Polycarp performs the following set of actions exactly once:
Note that the number kk is not fixed in advance and can be arbitrary. Your task is to find the minimum value of kk.
For example, if n=4n=4 and a=[4,5,2,5]a=[4,5,2,5], then Polycarp could make the following distribution of the candies:
Note that in this example Polycarp cannot choose k=1k=1 friend so that he can redistribute candies so that in the end all aiai are equal.
For the data nn and aa, determine the minimum value kk. With this value kk, Polycarp should be able to select kk friends and redistribute their candies so that everyone will end up with the same number of candies.
Input
The first line contains one integer tt (1≤t≤1041≤t≤104). Then tt test cases follow.
The first line of each test case contains one integer nn (1≤n≤2⋅1051≤n≤2⋅105).
The second line contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤1040≤ai≤104).
It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052⋅105.
Output
For each test case output:
Example
input
Copy
5 4 4 5 2 5 2 0 4 5 10 8 5 1 4 1 10000 7 1 1 1 1 1 1 1
output
Copy
2 1 -1 0 0
解题说明:此题是一道模拟题,统计糖果的总数,判断能否平分,不能平分就输出-1,否则遍历数列,统计超过平均数的数字即可。
#include<stdio.h>
int main()
{
long long int t;
scanf("%lld", &t);
while (t--)
{
long long int n, s = 0, c = 0;
scanf("%lld", &n);
long long int a[200007], i;
for (i = 0; i<n; i++)
{
scanf("%lld", &a[i]);
s += a[i];
}
if (s%n == 0)
{
for (i = 0; i<n; i++)
{
if (a[i]>s / n)
{
c += 1;
}
}
printf("%lld\n", c);
}
else
{
printf("-1\n");
}
}
}