标签:turn mes etc \n row lib node bsp cstring
题目链接:https://ac.nowcoder.com/acm/contest/331/G
思路:
根据唯一分解定理,如果一个数n可以表示成
n=p1a1*p2a2*...*pkak (pi是第i个质数)
那么n的因数的个数为(a1+1)*(a2+1)*...*(ak+1)。
这题可以先打表。
代码如下:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 const int maxn=1e6+5; 8 int t,n; 9 int min_num[maxn],cnt[maxn]; 10 int main(){ 11 memset(min_num,-1,sizeof(min_num)); 12 for(int i=1;i<maxn;i++) 13 for(int j=i;j<maxn;j+=i) 14 cnt[j]++; 15 for(int i=1;i<maxn;i++) 16 if(min_num[cnt[i]]==-1) 17 min_num[cnt[i]]=i; 18 scanf("%d",&t); 19 while(t--){ 20 scanf("%d",&n); 21 printf("%d\n",min_num[n]); 22 } 23 return 0; 24 }
标签:turn mes etc \n row lib node bsp cstring
原文地址:https://www.cnblogs.com/FrankChen831X/p/10345719.html