• 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 }
  • 相关阅读:
    apache安装
    docker搭建redis主从
    docker安装
    sklearn工具-绪论
    数学基础-矩阵和线性代数
    数学基础-概率论与贝叶斯先验
    数学基础-数学分析
    数据科学包——Matplotlib
    数据科学包——pandas
    数据科学包——numpy
  • 原文地址:https://www.cnblogs.com/syiml/p/2909885.html
Copyright © 2020-2023  润新知