題目連結: https://zerojudge.tw/ShowProblem?problemid=c122

# 內容

如果一個數字它的質因數只有 2,3,5 或 7 則我們稱這個數字為 Humble number。下列數字代表前 20 個 Humble numbers:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27,...

# 輸入

輸入包含多個測試資料。每一個測試資料包含一個整數n,1<= n <= 5842。當 n=0 時代表輸入結束。

# 輸出

對每個測試資料必須輸出一行 "The nth humble number is number."。對每個 nth 你必須依照 n 值不同輸出正確的序數 "st", "nd", "rd", 或 "th"。請參考 sample output。

# 解題思路

set 在填入數字時會自動排序喔

# 程式碼

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string Ord(int n){
    n%=100;
    if(n>=11&&n<=20)
        return "th";
    int x = n % 10;
    if(x==1)
        return "st";
    else if(x==2)
        return "nd";
    else if(x==3)
        return "rd";
    else
        return "th";
}
int main(){
    int n,i=1;
    set<ll> H_N;
    long long Humble_num[5843];
    H_N.insert(1);
    for(set<ll>::iterator it=H_N.begin();it!=H_N.end()&&i<=5842;it++,i++){
        Humble_num[i]=*it;
        H_N.insert(*it * 2);
        H_N.insert(*it * 3);
        H_N.insert(*it * 5);
        H_N.insert(*it * 7);
    }
    while(cin>>n&&n)
        cout<<"The "<<n<<Ord(n)<<" humble number is "<<Humble_num[n]<<".\n";
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay