luogu1414 又是毕业季II

来源:互联网 发布:cda数据分析师level1 编辑:程序博客网 时间:2024/05/21 21:37

数学蒟蒻看到这题吓蒙了。
首先我们很容易发现,人数下降,则gcd不上升
我们可以将n个数全分解因数,对每个因数统计他是多少个数的因数。这样,对于一个i,我们找到一个最大的因数k,使count[k]>=i即可。

#include <iostream>#include <cstdio>using namespace std;int n, d[1000005], maxx, x;int main(){    cin>>n;    for(int ii=1; ii<=n; ii++){        scanf("%d", &x);        maxx = max(maxx, x);        for(int i=1; i*i<=x; i++)            if(x%i==0){                d[i]++;                d[x/i] += i*i==x?0:1;            }    }    for(int i=1; i<=n; i++){        while(d[maxx]<i)    maxx--;        printf("%d\n", maxx);    }    return 0;}
原创粉丝点击