zoukankan      html  css  js  c++  java
  • day2(丑数)

    题目描述:

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

    提交链接:点击

    思路:丑数的定义是1或者因子只有2 3 5,可推出丑数=丑数*丑数,假定丑数有序序列为:a1,a2,a3.......an 所以可以将以上序列(a1除外)可以分成3类,必定满足: 包含2的有序丑数序列:2*a1, 2*a2, 2*a3 ..... 包含3的有序丑数序列:3*a1, 3*a2, 3*a3 ..... 包含5的有序丑数序列:5*a1, 5*a2, 5*a3 ..... 以上3个序列的个数总数和为n个,而且已知a1 = 1了,将以上三个序列合并成一个有序序列即可.

    代码:

    class Solution {
    public:
        int GetUglyNumber_Solution(int index) {
            int res[index];
            if(index==0) return 0;
            res[0]=1;
            int a1=0,a2=0,a3=0;
            for(int i=1;i<index;i++){
                res[i]=min(res[a1]*2,min(res[a2]*3,res[a3]*5));
                if(res[a1]*2==res[i]) a1++;
                if(res[a2]*3==res[i]) a2++;
                if(res[a3]*5==res[i]) a3++;
            }
            return res[index-1];
        }
    };
    "{:02d}".format(i) for i in range(24)
    
    :后表示填充的字符,一般为一位,默认为空格,这里指定用0填充。 将i变为两位十进制数字的字符串,不够两位用0填充
    
    结果如下:
    
      ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    Java -- Map
    Bootstrap -- 标签属性
    SQLServer -- 竟然默认不区分大小写
    ThinkPHP -- 问题
    ThinkPHP
    MVC-内容详情页显示内容
    未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。
    Random.Next获取随即数
    Razor语法小记
    VisualStudio自定义代码段_方法二
  • 原文地址:https://www.cnblogs.com/logo-88/p/9627642.html
Copyright © 2011-2022 走看看