pku_1338 Ugly Numbers

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 num[1501];

int min(int a,int b,int c)
{
	if(c>a) c=a;
	if(c>b) c=b;
	return c;

}

void getNumList()
{
	int i,j,k;
	int n;
	for(n=1;n<=5;++n) 
		num[n]=n;
	for(i=3,j=2,k=2;n<=1500;++n) {
		num[n]=min(num[i]*2,num[j]*3,num[k]*5);
		while(num[i]*2<=num[n])
			++i;
		while(num[j]*3<=num[n])
			++j;
		while(num[k]*5<=num[n])
			++k;	
	}
}

int main()
{
	getNumList();
	int n;
	while(cin>>n && n) {
		cout<<num[n]<<endl;
	}	
	return 0;
} 
================================================================
PS:貌似不是什么难题,但是WA好几次居然将num[k]*5写成num[k]*4了,囧...

你可能感兴趣的:(c,Integer,input,each,output,Numbers)