Ugly Numbers
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 24517 | Accepted: 10837 |
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.
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> #include<algorithm> using namespace std; int main() { int ans[1509]= {1}; int x2=0,x3=0,x5=0; for(int i=1;i<=1501; i++) { int com[3]={ans[x2]*2,ans[x3]*3,ans[x5]*5}; sort(com,com+3); ans[i]=com[0]; if(ans[i]==ans[x2]*2)x2++; if(ans[i]==ans[x3]*3)x3++; if(ans[i]==ans[x5]*5)x5++; } int n; while(cin>>n&&n!=0) cout<<ans[n-1]<<endl; return 0; }