zzuli---1898---985的数字难题

题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1898

Description

985有n个数,已知每次操作可以将其中不相同的两个数一个加一、一个减一,操作次数不限。
问他最多可以得到多少个相同的数。

 

Input

第一行输入一个整数t,代表有t组测试数据。
每组数据占两行,第一行输入一个n代表元素个数,下面一行输入n个整数a[]。
注:1 <= t <= 30,1 <= n <= 1e4,1 <= a[] <= 1e3。
 

 

Output

输出一个整数代表最多可以得到多少个相同的数。

 

Sample Input

2 3 1 1 1 2 2 3

Sample Output

3 1

HINT

 

Source

hpu

analyse:

1>若所给序列中的数字和能够被n平分,那么在若干次加减后最后一定能变成n个相同的数.

2>否则就可以找到一个数充当替罪羊,让另外n-1个数和替罪羊加或减变成同一个数.

#include <cstdio>
#include <cstring>
#include<iostream>
#include<queue>
#include<stack>
#include<cmath>
#include <map>
#include <algorithm>

using namespace std;

const int maxn=1100;
const int INF=0x3f3f3f3f;

int main()
{
    int T;
    scanf("%d", &T);

    while(T--)
    {
        int n;
        scanf("%d", &n);

        int num, sum=0;
        for(int i=0; i<n; i++)
        {
            scanf("%d", &num);
            sum+=num;
        }

        if(sum%n==0)
            printf("%d\n", n);
        else
            printf("%d\n", n-1);
    }
    return 0;
}

 

posted @ 2016-08-24 09:28  爱记录一切美好的微笑  阅读(162)  评论(0编辑  收藏  举报