用的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;
}