题目描述
桐桐把一个自然数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;
}