P1414 又是毕业季II

预处理得到所有数的因数,设一个数组保存因数的个数

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n, num[1000100], ma;
int main() {
    cin >> n;
    for(int a, i = 0; i < n; i++) {
        cin >> a;
        ma = max(a, ma);
        int s = sqrt(a);
        for(int j = 1; j <= s; j++) {
            if(a % j == 0) {
                num[j]++;
                if(j * j != a)
                    num[a / j]++;
            }
        }
    }
    for(int i = 1; i <= n; i++) {
        while(num[ma] < i)
            ma--;
        cout << ma << endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Endeavor_G/article/details/89058335