poj1338(Ugly Numbers)
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
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.
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 0Sample Output
1 2 10
分析:打表,好笨的方法=_=.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<cstdio> #include<algorithm> using namespace std; long long a[30000],cnt=0; long long Pow(int x,int k) { if(k==0) return 1; if(k==1) return x; long long y=Pow(x,k/2); y*=y; if(k%2) y*=x; return y; } void f() { long long N=(long long)17592186044416; for(int i=0;i<=44;i++) { long long ans2=Pow(2,i); for(int j=0;j<30;j++) { long long ans3=Pow(3,j); for(int k=0;k<20;k++) { long long ans5=Pow(5,k); if(ans5<=N/ans2/ans3) a[cnt++]=ans2*ans3*ans5; } } } sort(a,a+cnt); } int main() { f(); int n; while(scanf("%d",&n)&&n) printf("%d\n",a[n-1]); return 0; }
作者:ACRykl —— O ever youthful,O ever weeping!
出处:http://www.cnblogs.com/ACRykl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。