POJ 1338 Ugly Numbers
2013-04-09 22:30
369 查看
对构造目标函数还是不熟悉。 自己每次都是想用排除法去构造,于是 时间和空间复杂度提高。 不如采用直接构造 数列 的方法 或者直接找出目标数 或 用i j k 循环 等构造 Ugly Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17602 Accepted: 7805 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 a[1510]; int main() { int p2,p3,p5; p2=p3=p5=a[1]=1; int n; for(int i=2;i<=1500;i++) { int t2=a[p2]*2; int t3=a[p3]*3; int t5=a[p5]*5; if(t2<t3&&t2<t5) {a[i]=t2;p2++;} else if(t3<t2&&t3<t5) {a[i]=t3;p3++;} else if(t5<t2&&t5<t3) {a[i]=t5;p5++;} else if(t2==t3&&t2<t5) {a[i]=t2;p2++;p3++;} else if(t2==t5&&t2<t3) {a[i]=t2;p2++;p5++;} else if(t3==t5&&t3<t2) {a[i]=t3;p3++;p5++;} else {a[i]=t2;p2++;p3++;p5++;} } while(cin>>n&&n!=0) { cout<<a <<endl; } return 0; }
相关文章推荐
- 解题报告:POJ_1338 Ugly Numbers
- poj1338 Ugly Numbers
- poj 1338 ugly numbers和poj 2247Humble Numbers 解题报告(附详细分析)
- POJ-1338-Ugly Numbers-丑数
- (DS1.5.8)POJ 1338 Ugly Numbers(寻找因子只含有2||3||5的数)
- poj1338 Ugly Numbers(技巧)
- poj 1338 Ugly Numbers
- POJ 1338 Ugly Numbers(模拟)
- POJ 1338 Ugly Numbers(丑数)
- POJ 1338 Ugly Numbers
- poj 1338 Ugly Numbers
- POJ - 1338 Ugly Numbers-STL的灵活运用
- poj 1338 Ugly Numbers(丑数模拟)
- POJ 1338 Ugly Numbers 笔记
- poj-1338-Ugly Numbers-数论
- POJ1338 Ugly Numbers(解法二)
- poj 1338 Ugly Numbers(丑数模拟)
- poj 1338 Ugly Numbers [ 离线预处理 - 只处理丑数,复杂度很低 此题也是 程序猿的经典面试题]
- POJ1338 Ugly Numbers
- POJ 1338 Ugly Numbers(丑数)