原题
https://ac.nowcoder.com/acm/contest/331/G
解法
素数筛变形,如果有因数的话那么他的乘积一定包含这个因数,然后每次记录一下最小值即可这种算法的复杂度应该是nloglogn 1e6的数据也可以过
代码
#include <bits/stdc++.h>
using namespace std;
int bk[6666666],vis[6666666];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
for(int i=1;i<=1000000;i++)
{
for(int j=i;j<=1000000;j+=i)
vis[j]++;
if(bk[vis[i]]==0)
bk[vis[i]]=i;
}
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
if(!bk[n])
cout<<"-1
";
else
cout<<bk[n]<<"
";
}
}