丑陋数
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 406 测试通过 : 151
总提交 : 406 测试通过 : 151
题目描述
“丑陋数”是指那些质因子只包含2,3或5的数(可以都不包含,所以1也是一个“丑陋数”)。数列1,2,3,4,5,6,8,9,10,12,...给出了前十个“丑陋数”。
给出正整数n,请输出第n个“丑陋数”。
给出正整数n,请输出第n个“丑陋数”。
输入
每行仅有一个正整数n(n<=1500),输入以“0”结尾。
输出
对于每一个输入的n,输出第n个“丑陋数”,对结尾的“n=0”不用作任何输出。
样例输入
1
2
9
0
样例输出
1
2
10
提示
#include <cstdio>
#include<iostream>
using namespace std;
int a[1501];
int min(int x, int y, int z){
return min(x,min(y,z));
}
int main(){
int x,y,z,i;
a[1]=1;
x=y=z=1;
for(i=2;i<=1500;i++){
a[i]=min(2*a[x],3*a[y],5*a[z]);
if(a[i]==2*a[x]) x++;
if(a[i]==3*a[y]) y++;
if(a[i]==5*a[z]) z++;
}
int n;
while(scanf("%d",&n),n){
printf("%d\n",a[n]);
}
return 0;
}