Ugly Numbers

Ugly Numbers(1.5.8)

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

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 n,p,i,m2,m3,m5;
    int a[1505],t;
    while(cin>>n&&n!=0)
    {
        m2=0;
        m3=0;
        m5=0;
        a[0]=1;
        for(i=1;i<n;i++)
        {
           if(2*a[m2]>3*a[m3])
            t=a[m3]*3;
           else
            t=a[m2]*2;
           if(t>5*a[m5])
            t=a[m5]*5;
           if(t==2*a[m2]) m2++;
           if(t==3*a[m3]) m3++;
           if(t==5*a[m5]) m5++;
           a[i]=t;
        }
        cout<<a[n-1]<<endl;
    }
    return 0;
}

 
原文地址:https://www.cnblogs.com/u013533289/p/4477309.html