南邮 OJ 1167 丑陋数

来源:互联网 发布:mac os x 10.9 下载 编辑:程序博客网 时间:2024/06/10 05:06

丑陋数

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 424            测试通过 : 163 

比赛描述

“丑陋数”是指那些质因子只包含2,3或5的数(可以都不包含,所以1也是一个“丑陋数”)。数列1,2,3,4,5,6,8,9,10,12,...给出了前十个“丑陋数”。
给出正整数n,请输出第n个“丑陋数”。


输入

每行仅有一个正整数n(n<=1500),输入以“0”结尾。

输出

对于每一个输入的n,输出第n个“丑陋数”,对结尾的“n=0”不用作任何输出。

样例输入

1
2
9
0

样例输出

1
2
10

提示

 

题目来源

计算机学院/软件学院第二届ACM程序设计大赛



#include<stdio.h>#define MAX_N 1501inline long min(long a,long b){return a<b?a:b;}int main(){int n,i;long ugly[MAX_N];ugly[0] = 1;long *p2=ugly,*p3=ugly,*p5=ugly;for(i=1;i<MAX_N;++i){ugly[i] = min(min(*p2*2,*p3*3),*p5*5);while(*p2*2<=ugly[i]){//*p2*2>ugly[i],所以ugly[i+1]可能就是*p2*2,当然还要跟其他两个比较,取最小值++p2;}while(*p3*3<=ugly[i]){++p3;}while(*p5*5<=ugly[i]){++p5;}}while(scanf("%d",&n)!=EOF && n){printf("%d\n",ugly[n-1]);}}







0 0
原创粉丝点击