九度OJ 1214
-
题目描述:
-
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。
习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
-
输入:
-
输入包括一个整数N(1<=N<=1500)。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出第N个丑数。
-
样例输入:
-
3
-
样例输出:
-
3
我的代码:
#include <stdio.h> #include <stdlib.h> int uglyMin(int a,int b,int c){ int temp=(a<b?a:b); return (temp<c?temp:c); } int findUgly(int n){ int ugly[1510]; ugly[0]=1; int index2=0; int index3=0; int index5=0; int index=1; int min; while(index<n){ min=uglyMin(ugly[index2]*2,ugly[index3]*3,ugly[index5]*5); if(min==ugly[index2]*2) index2++; if(min==ugly[index3]*3) index3++; if(min==ugly[index5]*5) index5++; ugly[index++]=min; } return ugly[n-1]; } int main(){ int n; while(scanf("%d",&n)!=EOF){ printf("%d\n",findUgly(n)); } system("pause"); return 0; }
参考链接:
http://blog.163.com/xie_wenbin613/blog/static/17548909520124280049635/