正题
第二题:又是毕业季II
这题就没有什么好说的了,就是找出因子,做一个桶把他们都统计起来,当寻找i个同学时,就把累计数大于i的因子相乘输出即可
代码<随便乱搞>
#include<cstdio>
#include<cstdlib>
#include<cstring>
int n;
int tot[1000010];
int ans[10001];
void k(int x)
{
for(int i=1;i*i<=x;i++)
if(x%i==0)
{
tot[i]++;
if(x/i!=i) tot[x/i]++;
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
k(x);
}
for(int i=1;i<=1000000;i++)
if(i>ans[tot[i]]) ans[tot[i]]=i;
int max=0;
for(int i=n;i>=1;i--)
{
int t=ans[i];
if(ans[i]<max) ans[i]=max;
if(t>max) max=ans[i];
}
for(int i=1;i<=n;i++)
printf("%d\n",ans[i]);
}