zoukankan      html  css  js  c++  java
  • 丑数<数学技巧>

    题意:丑数就是质因子只有2,3,5 ,7,的数,另外1也是丑数。求第n(1=<n<=5842)个丑数,n=0,结束。

    思路:根据丑数的定义,丑数应该是另一个丑数乘以23、5或者7的结果(1除外)。那么,现在最主要的问题是如何排序,而且使得求得数不重复。

    <阶梯式上升>:从ans[1]=1,p1=1,p2=1,p3=1,p4=1,分别用2,3,5,7乘ans[px],得到一个v(min),这个v就是下一个ans,

    同时,对应的px++;

    技巧:因为题目中是多组输入,所以没必要没输入一个数就把程序跑一遍,而且n有上限,索性用类似于打表的方式把n<=上限的结果计算出来,每次直接输出就可以了,节省时间。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    ll ans[6000];
    void  fuck()
    {
        ans[1]=1;int p2 = 1, p3 = 1, p5 = 1, p7 = 1;int cnt = 1;//阶梯式上升
        while (cnt<=5842)
        {
            ll v = min(min(ans[p2] * 2, ans[p3] * 3),min( ans[p5] * 5, ans[p7] * 7));
            if (v == ans[p2] * 2) ++p2;
            if (v == ans[p3] * 3) ++p3;
            if (v == ans[p5] * 5) ++p5;
            if (v == ans[p7] * 7) ++p7;
            ans[++cnt] = v;
        }
    }
    int main ()
    {
        int n;
        fuck();
        while(~scanf("%d",&n)&&n)
        {
            printf("%lld
    ",ans[n]);
        }
        return 0;
    }


    想的太多,做的太少。
  • 相关阅读:
    javascript 介绍
    命令提示符(命令行)
    node(1) hello world
    用Vgg16来提取特征
    VGG16学习
    注意力模型
    统计学习方法
    数字图像处理(五)
    数字图像处理(四)
    BN
  • 原文地址:https://www.cnblogs.com/pealicx/p/6115644.html
Copyright © 2011-2022 走看看