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;
} 

  

posted @ 2013-11-22 10:17  七年之后  阅读(242)  评论(0编辑  收藏  举报