1167-丑陋数

描述

“丑陋数”是指那些质因子只包含2,3或5的数(可以都不包含,所以1也是一个“丑陋数”)。数列1,2,3,4,5,6,8,9,10,12,...给出了前十个“丑陋数”。 给出正整数n,请输出第n个“丑陋数”。

输入

每行仅有一个正整数n(n<=1500),输入以“0”结尾。

输出

对于每一个输入的n,输出第n个“丑陋数”,对结尾的“n=0”不用作任何输出。

样例输入

1

2

9

0

样例输出

1

2

10

#include<iostream>

#include<deque>

using namespace std;

int max(int a,int b)

{

    return a>=b?(a):(b);

}

int min(int a,int b)

{

    return a<b?(a):(b);

}

deque<int> A,B,C,S;

int main()

{

    int i,temp,n;

    i=1;

    S.push_back(1);

    int r=i;

    while(S.size()<1501)

    {

        r=S[i-1];

        A.push_back(r*2);

        B.push_back(r*3);

        C.push_back(r*5);

        temp=min(A.front(),B.front());

        temp=min(temp,C.front());

        if(A.front()==temp)

        {

            A.pop_front();

        }

        if(B.front()==temp)

        {

            B.pop_front();

        }

        if(C.front()==temp)

        {

            C.pop_front();

        }

        S.push_back(temp);

        i++;

    }

    while(scanf("%d",&n)!=EOF)

    {

        if(!n)

            break;

        cout<<S[n-1]<<endl;

    }    

    return 0;

} 

  

你可能感兴趣的:(1167-丑陋数)