zoukankan      html  css  js  c++  java
  • poj1338 Ugly Numbers

    题目:
    求第几个只拥有素数因素为2,3,5的数,包括1在内
    分析:
    因为只要求求到第1500个,可以用打表的方法来做,把前1500个数全部求出来,
    因为每一个ugly数都可以用某个以前的数来进行因素分解,所以不停地搜索当
    2,3,5乘以某个数恰好大于当前最大的ugly,这个数即为最新的ugly数,具体
    请看代码:

    #include <iostream>
    using namespace std;
    #define X 1505
    int ugly[X];//记录前1500个ugly数
    int tot;
    void solve()//搜索函数
    {
            int tot = 0;
            int p2 =1, p3 = 1,p5 =1;//分别表示2 3 5的当前乘以某个ugly恰好大于最大的ugly数的位置
            ugly[++tot] = 1;
            while(tot<=1500)
           {
                    while(2*ugly[p2]<=ugly[tot])//直到搜索到恰好大于最大的ugly数位置
                    p2++;
                    while(3*ugly[p3]<=ugly[tot])//同理
                    p3++;
                    while(5*ugly[p5]<=ugly[tot])//同理
                    p5++;
                    //把上面三个求到的数的最小值赋给最新的ugly数
                    ugly[++tot] = min(2*ugly[p2],min(3*ugly[p3],5*ugly[p5]));
            }
    }
    int main()
    {
             freopen("sum.in","r",stdin);
             freopen("sum.out","w",stdout);
             int n;
             solve();
             while(cin>>n,n)
             cout<<ugly[n]<<endl;
             return 0;
    }

  • 相关阅读:
    引用 struts2标签详解
    Java 中日期的计算
    在一个FORM中实现多个ACTION动作
    java.lang.OutOfMemoryError: PermGen space最好的解决方法
    Java实现和栈的应用举例
    Java的自动装箱和拆箱
    oracle11g更改字符集AL32UTF8为ZHS16GBK
    设计的臭味
    OOD设计五个原则
    推荐JQuery学习简介
  • 原文地址:https://www.cnblogs.com/yejinru/p/2374681.html
Copyright © 2011-2022 走看看