1. 程式人生 > >小米OJ 第N個醜數

小米OJ 第N個醜數

描述

把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。

輸入

輸入一個正整數N,0<N<10000

輸出

輸出一個正整數S,S為第N個醜數

輸入樣例

1
2
10

輸出樣例

1
2
12
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 10010;
ll a[maxn], n;
void Find(){
    int id2 = 0, id3 = 0, id5 = 0;
    int id = 0;
    a[0] = 1;
    while(id < 10000){
        ll t = min(a[id2]*2, min(a[id3]*3, a[id5]*5));
        if(t == a[id2]*2) id2++;
        if(t == a[id3]*3) id3++;
        if(t == a[id5]*5) id5++;
        a[++id] = t;
    }
}
int main()
{
    Find();
    while(cin >> n){
        cout << a[n-1] << endl;
    }
    return 0;
}