题目描述
铁子最近犯上了强迫症,他总是想要把一个序列里的元素变得两两不同,而他每次可以执行一个这样的操作,他可以选择序列里的任意两个元素相加,不妨记作a
i和a
j,然后把a
i+a
j放进序列里,再删掉a
i和a
j其中的随便一个,问最少操作多少次可以完成铁子的愿望?
输入描述:
第一行一个整数n表示序列的长度(1≤n≤105) 第二行n个整数ai表示序列的每个整数(1≤ai≤109)
输出描述:
输出一行表示答案
思路:相同数字的个数就是答案。
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;
}
}