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

浙公网安备 33010602011771号