zoukankan      html  css  js  c++  java
  • 九度oj 题目1214:丑数

    题目描述:

    把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。
    习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    输入:

    输入包括一个整数N(1<=N<=1500)。

    输出:

    可能有多组测试数据,对于每组数据,
    输出第N个丑数。

    样例输入:
    3
    样例输出:
    3

    此题用构造的办法求解,有三个指针,指向*2,*3,*5的数,每回取最小的结果加入到丑数的集合中去
    代码如下:
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <iostream>
     6 #include <cmath>
     7 
     8 #define min 1502
     9 
    10 using namespace std;
    11 int chou[min];
    12 int t[4];
    13 
    14 int main(int argc, char const *argv[])
    15 {
    16     chou[1] = 1;
    17     int m = 2;
    18     t[1] = t[2] = t[3] = 1;
    19 
    20     while(m < 1502) {
    21         int tmp1 = chou[t[1]] * 2;
    22         int tmp2 = chou[t[2]] * 3;
    23         int tmp3 = chou[t[3]] * 5;
    24         int mini = 1, mint = tmp1;
    25         if(mint > tmp2) {
    26             mint = tmp2;
    27             mini = 2;
    28         }
    29         if(mint > tmp3) {
    30             mint = tmp3;
    31             mini = 3;
    32         }
    33         if(mint != chou[m-1]) {
    34             chou[m++] = mint;
    35         }
    36         t[mini]++;
    37     }
    38     int n;
    39     while(scanf("%d",&n) != EOF) {
    40         printf("%d
    ",chou[n]);
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    博客园页面设置(转载)
    正则表达式30分钟入门教程 (转载)
    如何写出优雅的代码
    centos7 nginx+php5.6+mysql安装与配置
    git 进阶
    js 异步解决方案
    行动派
    unicode 与 utf-8
    bower command not found--windows
    click事件细节
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5768077.html
Copyright © 2011-2022 走看看