题目链接:https://vjudge.net/problem/UVA-11752

题意:

一个超级数是能够至少能表示为两个数的幂,求1~2^64-1内的超级数。

题解:

1.可知对于 n = a^b,如果b是合数,那么n同样可以表示为: n = (a^k)^c,其中k*c = b。所以只需要枚举底数,然后再枚举指数,如果指数为合数,那么它就是一个超级数。

2.由于2^64-1已经是 unsigned LL 的最大值了,为了避免溢出,指数应该从当前底数能达到的最大指数开始枚举。

3.由于一个超级数可能被多次访问到,所以用STL的 set 可以解决重复、离散化的问题,而且还能排序。

代码如下:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <set>
#define ms(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long LL;
const int INF = 2e9;
const LL LNF = 9e18;
const int mod = 1e9+;
const int maxn = 1e5+; int vis[];
void init()
{
int m = sqrt(+0.5);
for(int i = ; i<=m; i++) if(!vis[i]) {
for(int j = i*i; j<; j += i)
vis[j] = ;
}
} typedef unsigned long long ull;
set<ull>s; //用set完成了排序加去重的功能
int main()
{
init(); //标记在64以为的合数
for(ull i = ;; i++) //枚举底数
{
int t = ceil(*log()/log(i)) - ;
if(t<) break;
ull x = ;
for(int j = ; j<=t; j++)
{
x *= i;
if(vis[j]) s.insert(x);
}
} s.insert();
set<ull>::iterator it;
for(it = s.begin(); it!=s.end(); it++)
cout<<*it<<endl;
}

最新文章

  1. jQuery表单验证案例
  2. 51nod1089(最长回文子串之manacher算法)
  3. Ubuntu播放yuv文件
  4. Mac系统下配置Tomcat
  5. 浅谈c语言结构体
  6. C#读取Excel遇到无法读取的解决方法
  7. Quartz 2D绘制简单图形
  8. michael的沟通秘籍
  9. iOS开发中常见的语句@synthesize obj=obj的意义详解
  10. launchpad bzr
  11. javascript闭包特性
  12. Redis详细介绍
  13. 【转】Android Hook框架Xposed详解
  14. PS快速秒抠图技巧
  15. ADO.NET的整理
  16. Slash and BackSlash 记忆法
  17. [简记] fetch API 的初步使用
  18. nslookup debug
  19. float导致出现大面积空白
  20. 二、RHCSA试题解析

热门文章

  1. CodeForces - 11D A Simple Task
  2. Android--------------几个ADB经常使用命令
  3. -webkit-transform:translate3d(0,0,0)触发GPU加速,让网页动画更流畅
  4. nyoj43 24 Point game(DFS)
  5. windows xp下mysql5.0安装
  6. [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
  7. 我的Android进阶之旅------&amp;gt;Android关于Log的一个简单封装
  8. NFC 标签类型
  9. C# 打开指定的目录 记住路径中 / 与 \ 的使用方法
  10. 【BZOJ2625】[Neerc2009]Inspection 最小流