zoukankan      html  css  js  c++  java
  • UVA 11752 The Super Powers

    /*
    求1到2^64-1之间的数,这个数至少有两个不同数的正整数的幂,按从小到大的顺序输出!
    要是两个不同正整数的幂,则它必定是一个正整数的合数幂(这样才可以继续分解出另外一个数的幂形式)
    */
    #include <algorithm>
    #include <iostream>
    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <map>
    #include <set>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    const LL MAXN = 1e6;
    const ULL INF = (1 << 64) - 1;
    bool num[MAXN];
    void init()
    {
        LL i, j, k = 0;
        
        for(i = 2; i * i  <= 64; i++) {
            if(!num[i]) {
                for(j = i * 2; j <= 64; j += i)
                    num[j] = true;
            }
        }
    }
    int main()
    {
        init();
        set<ULL>st;
        st.insert(1);
        int i, j, k = 0;
        /*合数最小是4,对应的底数是2^16*/
        for(i = 2; i <= 1 << 16; i++) {
            ULL sum = 1;
            for(j = 1; j <= 64; j++) {
                sum *= i;
                if(num[j])
                    st.insert(sum);
                if(sum > INF / i)
                    break;
            }
        }
        set<ULL>::iterator it;
        for(it = st.begin(); it != st.end(); it++)
            cout << *it << endl;
        return 0;
    }
  • 相关阅读:
    PHP 魔术常量
    PHP 魔术方法
    php函数serialize()与unserialize()
    10 件有关 JavaScript 让人费解的事情
    windows下安装Python2和Python3共存
    SQL 行转列===列转行
    Redis 分布式锁
    RabbitMQ
    @Autowired
    AOP 日志切面
  • 原文地址:https://www.cnblogs.com/yu0111/p/6758988.html
Copyright © 2011-2022 走看看