136 - Ugly Numbers
题目大意
题目原文:http://uva.onlinejudge.org/external/1/136.pdf
因子只有2,3,5的数被称为Ugly Number。题目要求输出第1500个Ugly Number。
判断一个数是否只有2,3,5因子,只需将这个数一直除以2,3,5知道不能整除为止。如果最后结果是1的话,那么这个数就是Ugly Number。
但是这样的做法从1开始判断下来到第1500个数答案为八亿多,耗时20多秒才计算完成。不过题目没有测试数据,只需要最后结果,那么只需将最后结果输出就可以了。
一下附上计算代码和AC代码:
计算代码
1 #include<stdio.h> 2 int bo(int x)//判断x是不是Ugly Number,返回为1代表是,0代表不是 3 { 4 while(x%2==0) 5 { 6 x/=2; 7 } 8 while(x%3==0) 9 { 10 x/=3; 11 } 12 while(x%5==0) 13 { 14 x/=5; 15 } 16 if(x==1) return 1; 17 else return 0; 18 } 19 int main() 20 { 21 long i=0,j=1; 22 while(j<=1500) 23 { 24 i++; 25 if(bo(i)==1) printf("%d %ld\n",j++,i);//从1输出到1500 26 } 27 printf("The 1500'th ugly number is %ld.",i); 28 getchar(); 29 return 0; 30 }
AC代码
1 #include<stdio.h> 2 int main() 3 { 4 printf("The 1500'th ugly number is 860934420.\n"); 5 return 0; 6 }