前话
这咋人名都和 HP 一模一样了,SPOJ 出题人里是不是全是哈迷啊。
思路
非常直观的一个思路:从前往后枚举每一个数,看是否满足条件,输出满足条件的第一个。
CODE
#include<bits/stdc++.h>
using namespace std;
bool is(int n){//判断质数
if(n<2) return 0;
for(int i=2;i<=sqrt(n);i++) if(n%i==0) return 0;
return 1;
}
bool chk(int n){//看是否有三个及以上的质因子
int cnt=0;
for(int i=2;i<=n;i++){
if(n%i==0&&is(i)){
cnt++;
if(cnt==3) return 1;//如果有三个就可以直接退出
}
}
return 0;
}
main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int cnt=0;
for(int i=1;;i++){//从前往后枚举
if(chk(i)){
cnt++;
if(cnt==n){
cout<<i<<"\n";
break;
}
}
}
}
}
虽然还可以再优化,但也没必要了。
标签:cnt,SP10232,Distinct,题解,AMR11E,int,Primes From: https://www.cnblogs.com/zhouyk0501/p/18190094