题目描述
桐桐把一个自然数N的正因子个数记为F(N),例如18的所有正因子为1、2、3、6、9、18,所以F(18)=6。现在给出K,桐桐想求出所有满足F(N)=K的N中最小的数,你能帮助她吗?
输入
第1行为K,其中0<K<=80。
输出
如果存在不大于20000的解,则输出这个N,并输出相应的K个因子;否则输出“NO SOLUTION”。
样例输入
9
样例输出
36 1 2 3 4 6 9 12 18 36
Code:
#include<bits/stdc++.h>
using namespace std;
int c(int n){
int cu=2;
double k=sqrt(n);
for(int i=2;i<=k;i++){
if(n%i==0){
if(i==sqrt(n)&&n/i==i){
cu++;
}else{
cu+=2;
}
}
}
return cu;
}
int main(){
int n,tmp=-1;
cin>>n;
for(int i=1;i<=20000;i++){
if(c(i)==n){
cout<<i<<endl;
tmp=i;
break;
}
}
if(tmp==-1){
cout<<"NO SOLUTION";
exit(0);
}
for(int j=1;j<=tmp;j++){
if(tmp%j==0){
cout<<j<<" ";
}
}
return 0;
}