(UVA
来源:互联网 发布:万德数据库账号 编辑:程序博客网 时间:2024/05/19 10:14
链接: https://vjudge.net/problem/UVA-11752
题意:如果一个数至少是两个不同的正整数的幂,那么称它是超级幂。
比如64=8^2=4^3。 无输入,输出1-2^64-1之间的所有超级幂,按照升序输出
分析:可以想到指数肯定是合数。
而要求按照升序输出所有的超级幂,最大为2^64-1,可以求出指数最大为ceil(64*log(2)/log(i))-1
直接遍历底数,根据题意,会出现重复,需要判重,加入set即可,也可以用数组,调用unique()函数
注意:使用unsigned long long
#include <bits/stdc++.h>using namespace std;#define mem(a,n) memset(a,n,sizeof(a))#define pb(x) push_back(x)typedef long long LL;typedef unsigned long long ull;const int mod=1e6;const double eps=1e-6;const int INF=0x3f3f3f3f;const int N=100;bool pri[N]={0};void init(){ for(int i=2; i<=80; i++) { bool flag=0; for(int j=2; j*j<=i; j++) if(i%j==0) { pri[i]=0; flag=1; break; } if(!flag) pri[i]=1; }}void solve(){ set<ull>st; //printf("6333\n"); for(ull i=2; i<65536; i++) { ull tmp=i; for(ull j=2; j<=ceil(64*log(2)/log(i))-1; j++) { tmp*=i; if(pri[j]) continue; st.insert(tmp); } } //printf("11333\n"); st.insert(1); set<ull>::iterator it; for(it=st.begin(); it!=st.end(); it++) cout<<(*it)<<endl;}int main(){ //ios::sync_with_stdio(false); init(); solve(); return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- C# 系统应用之窗体最小化至任务栏及常用操作
- photoshop图片显示为索引,解决办法
- css3 calc()方法详解
- c#-ACCESS数据库用DGV控件删除选中行
- 动态设置密码可见与否
- (UVA
- leetcode 5. Longest Palindromic Substring(回文和Manacher算法)
- 以太坊挖矿软件反抽水-eth免抽水破解收费小插件(完美兼容Claymore原版内核,长沙矿工,圣骑士,中国矿工,ETH超级矿工)
- lintcode:快乐数
- Java 运算符
- 1275:计算平均数
- 以太坊挖矿软件反抽水-eth 免抽水破解收费小插件 (完美兼容 Claymore 原版内核,长沙矿工,圣骑士,中国矿工,ETH 超级矿工)
- 关于红黑树的初步实现
- java IO笔记(FileDescriptor)