用的int,没影响啊
AC代码
#include<vector>
#include<unordered_map>
using namespace std;
int main()
{
// 输入
int n; // 总数
cin >> n;
int val;
unordered_map<int, int> valMap;
unordered_map<int, int>::iterator valIter;
// 输入并计数
for (int i = 0; i < n; i++)
{
cin >> val;
if ((valIter = valMap.find(val)) != valMap.end())
{
(valIter->second)++;
}
else
{
valMap[val] = 1;
}
}
// 寻找最小值
int min = n;
for (auto i : valMap)
{
// 不足 2 的球肯定不行,直接返回0
if (i.second < 2)
{
cout << 0;
return 0;
}
// 和 n 相同,说明只有一种球,返回 1
if (i.second == n)
{
cout << 1;
return 0;
}
// 最小值
if (i.second < min && i.second != 0)
{
min = i.second;
}
}
int num = min; // 篮子球的个数
int k = 1;
int maxK = min;
bool flag = false;
while (num >= 2 && k <= (min / 2))
{
if (min % k == 0)
{
num = min / k;
for (auto i : valMap)
{
if (i.second % num != 0)
{
break;
}
flag = true;
}
}
else
{
k++;
}
if (flag)
break;
}
if (flag)
{
cout << n / num;
}
else
{
cout << 0;
}
system("pause");
return 0;
}