zoukankan      html  css  js  c++  java
  • 丑数

    http://poj.org/problem?id=1338
    题意:
    因子中只含2 3 5的数成为丑数;

    分析:
    可以判断每一个数是不是丑数,但是这样太慢,可以根据定义直接求出每一个丑数

    因为每一个丑数都是在已有的丑数中通过乘以2或3或5得来的
    第一步: 每一个数都乘以2,会得到很多大于或者小于当前的最大丑数,小于当前的最大丑数已经在当前丑数序列中,因此不用记录
    因为我们要递增的找出丑数所以只需刚刚好大于当前的最大丑数即可并记录下来;
    第二步 :每一个数都乘以3...................................记录下刚刚大于当前最大的丑数即可

    第三步 ;每一个数都乘以5...................................记录下刚刚大于当前最大的丑数即可

    第四步:找出三个数中最小的数就是下一个丑数;

    include<stdio.h>

    include

    using namespace std;
    int ugly[1550];
    void print()
    {
    ugly[1]=1;
    ugly[2]=2;
    ugly[3]=3;
    ugly[4]=4;
    ugly[5]=5;

     int n=5;
     bool max1Op=true,max2Op=true,max3Op=true;
     int max1,max2,max3;
     while(n<=1500)
     {
         for(int i=1;i<=n;i++)
        {
    
         if(max1Op)  max1=ugly[i]*2;
         if(max1>ugly[n])max1Op=false;
         if(max2Op)  max2=ugly[i]*3;
         if(max2>ugly[n])max2Op=false;
         if(max3Op)  max3=ugly[i]*5;
         if(max3>ugly[n])max3Op=false;
        }
        max1Op=true,max2Op=true,max3Op=true;
        ++n;
        ugly[n]=min(max1,min(max2,max3));
     }
    

    }
    int main()
    {
    print();
    int n;
    while(scanf("%d",&n),n)
    printf("%d ",ugly[n]);
    return 0;

    }

    梦里不知身是客,一晌贪欢。
  • 相关阅读:
    css 伪类
    tornado 作业 简单首页 登录页 个人中心
    tornado 作业 自定义模板 UIMethod以UIModule
    tornado 网页提交内容 展示内容作业
    tornado
    javascript
    廖雪峰官网学习js 数组
    廖雪峰官网学习js 字符串
    廖雪峰官网学习js 数据类型和变量
    协程gevent学习
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/5258949.html
Copyright © 2011-2022 走看看