丑陋数

丑陋数

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 406            测试通过 : 151 

题目描述

“丑陋数”是指那些质因子只包含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 <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
",a[n]);
    }
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Tobyuyu/p/4965698.html