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

  • 相关阅读:
    POJ3666 Making the Grade[动态规划]
    vector内部的实现1
    win32概述
    stl概述
    C++概要简介
    类的常量成员
    模板
    c11标准
    异常处理
    pak文件的打包和解包
  • 原文地址:https://www.cnblogs.com/logo-88/p/9627642.html
Copyright © 2011-2022 走看看