首页 > 代码库 > Ugly Numbers(1.5.8)

Ugly Numbers(1.5.8)


Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u
Submit Status

Description

Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, ... 
shows the first 10 ugly numbers. By convention, 1 is included. 
Given the integer n,write a program to find and print the n‘th ugly number. 

Input

Each line of the input contains a postisive integer n (n <= 1500).Input is terminated by a line with n=0.

Output

For each line, output the n’th ugly number .:Don’t deal with the line with n=0.

Sample Input

1
2
9
0

Sample Output

1
2
10
#include<iostream>
using namespace std;
int main( ) 
{ 
    int un[1505]={0}; 
    int m2=0,m3=0,m5=0,i,t; 
    un[0]=1; 
    for(i=1;i<1500;i++) 
    { 
        if(2*un[m2]>3*un[m3]) 
            t=un[m3]*3; 
        else 
            t=un[m2]*2; 
        if(t>un[m5]*5) 
            t=un[m5]*5; 
 
        if(t == 2*un[m2]) m2++; 
        if(t == 3*un[m3]) m3++; 
        if(t == 5*un[m5]) m5++; 
 
        un[i]=t; 
    } 
	int a;
  while(cin>>a&&a)
  {a--;cout<<un[a]<<endl;}
    return 0; 
}