zoukankan      html  css  js  c++  java
  • UVa 11752 (素数筛选 快速幂) The Super Powers

    首先有个关键性的结论就是一个数的合数幂就是超级幂。

    最小的合数是4,所以枚举底数的上限是pow(2^64, 1/4) = 2^16 = 65536

    对于底数base,指数的上限就是ceil(64*log(2)/log(base)),注意这个上限不能取到,是个开区间

     1 #include <cstdio>
     2 #include <cmath>
     3 #include <set>
     4 #include <cassert>
     5 using namespace std;
     6 
     7 typedef unsigned long long ULL;
     8 typedef set<ULL>::iterator It;
     9 bool vis[70];
    10 
    11 ULL POW(int a, int p)
    12 {
    13     ULL ans = 1, base = a;
    14     while(p)
    15     {
    16         if(p & 1ULL) ans *= base;
    17         base *= base;
    18         p >>= 1;
    19     }
    20     return ans;
    21 }
    22 
    23 int main()
    24 {
    25     for(int i = 2; i <= 64; i++) if(!vis[i])
    26         for(int j = i * i; j <= 64; j += i) vis[j] = true;
    27 
    28     set<ULL> ans;
    29     ans.insert(1);
    30     for(int base = 2; base < 65536; base++)
    31         for(int p = 4; p < (int)ceil(64.0 * log(2.0) / log(base)); p++) if(vis[p])
    32         {
    33             ULL v = POW(base, p);
    34             assert(v != 1ULL); assert(v != 0);
    35             if(!ans.count(v)) ans.insert(v);
    36         }
    37 
    38     for(It i = ans.begin(); i != ans.end(); i++)
    39         printf("%llu
    ", *i);
    40 
    41 
    42     return 0;
    43 }
    代码君
  • 相关阅读:
    springboot接口测试
    谷粒学院_day08_课程管理_添加课程之课程发布(后端开发)
    谷粒学院_day03_vue组件
    谷粒学院_day03_vue固定代码抽取
    vue自定义事件
    vue插槽slot
    vue基本语法
    Vue之axios异步通信
    无归岛[HNOI2009]
    仓库建设[ZJOI2007]
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4357304.html
Copyright © 2011-2022 走看看