POJ-1338 Ugly Numbers-被2,3,5整除的数

Ugly Numbers
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 21878   Accepted: 9772

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

Source

New Zealand 1990 Division I,UVA 136

#include <iostream>
#include <cstring>
#include <iomanip>
#include <stdio.h>
#include <cmath>
#include <algorithm>
using namespace std;

int main()
{
    long long n=0,m,i,j,k,l=1000000000,a[100000];//数组不能开得太大不然容易越界
    memset(a,0,sizeof(a));
    a[0]=1;
    for(i=1; i<l; i*=2)
        for(j=1; i*j<l; j*=3)
            for(k=1; i*j*k<l; k*=5)
            {
                ++n;
                a[n]=i*j*k;
            }
    sort(a,a+n+1);
    while(cin>>m&&m!=0)
    {
        cout<<a[m]<<endl;
    }
    return 0;
}


你可能感兴趣的:(C++,poj)