題解:SP10232 AMR11E - Distinct Primes
前話
這咋人名都和 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;
}
}
}
}
}
雖然還可以再優化,但也沒必要了。

浙公網安備 33010602011771號