牛客小白月赛4-强迫症

题目描述 

铁子最近犯上了强迫症,他总是想要把一个序列里的元素变得两两不同,而他每次可以执行一个这样的操作,他可以选择序列里的任意两个元素相加,不妨记作a i和a j,然后把a i+a j放进序列里,再删掉a i和a j其中的随便一个,问最少操作多少次可以完成铁子的愿望?

输入描述:

第一行一个整数n表示序列的长度(1≤n≤105)
第二行n个整数ai表示序列的每个整数(1≤ai≤109)

输出描述:

输出一行表示答案
示例1

输入

复制
3
1 2 2

输出

复制
1

说明

将序列的第1个整数和序列的第2个整数相加,再删掉第2个整数。

思路:相同数字的个数就是答案。

ACDAIMA:

#include <iostream>
#include <math.h>
#include <string>
#include <algorithm>
using namespace std;
#define LL long long
int a[100005];
int main()
{
    int n;
    while(cin >> n)
    {
        for(int i = 0; i < n; i++)
            cin >> a[i];
        sort(a,a+n);
        int q = unique(a,a+n) - a; 
        cout << n - q <<endl;
    }
}


猜你喜欢

转载自blog.csdn.net/sugarbliss/article/details/80861807