找出(l,r)内的所有的指数最大的次方和

因为一个数可能可以看成a^b和c^d,所以我需要去重,从后往前枚举幂数,然后找可以整除的部分,把低次幂的数去掉。

然后开n方的部分,先用pow()函数找到最接近答案的数,但是会丢失精度,然后在这个数的附近寻找最接近答案的整数,用快速幂在乘n次幂回去,看最接近原本数的是哪一个。

#include<map>
#include<set>
#include<ctime>
#include<cmath>
#include<stack>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define lowbit(x) (x & (-x))typedef unsigned long long int ull;
typedef long long int ll;
const double pi = 4.0*atan(1.0);
const int inf = 0x3f3f3f3f;
const int maxn = 100;
const int maxm = 200010;
const int mod = 998244353;
const double eps = 1e-8;
using namespace std;ll n, m;
int T, tol;
ll num[70];
ll INF = 1e18;ll qpow(ll a, ll b) {ll ans = 1;while(b) {if(b&1) {double tmp = 1.0 * INF / ans;if(a > tmp)        return -1;ans = ans * a;}b >>= 1;if(a > ((ll)1<<31) && b)    return -1;a = a*a;}return ans;
}ll calc(ll x,  int pos) {ll a = (ll)pow((double)x, 1.0/pos);ll ansl = qpow(a-1, pos);ll ansm = qpow(a, pos);ll ansr = qpow(a+1, pos);if(ansr != -1 && ansr <= x)        return a+1;if(ansm != -1 && ansm <= x)        return a;return a-1;
}ll solve(ll x) {memset(num, 0, sizeof num);num[1] = x;int pos = 2;for(; pos <= 64; pos++) {ll tmp = calc(x, pos) - 1;if(tmp <= 0)    break;num[pos] = tmp;}pos--;for(int i=pos; i>=1; i--) {for(int j=2; i*j<=pos; j++) {num[i] -= num[i*j];}}//for(int i=1; i<=pos; i++)    printf("%I64d%c", num[i], i==pos ? '\n' : ' ');ll ans = 0;for(int i=1; i<=pos; i++)    ans += i * num[i];return ans;
}int main() {while(scanf("%I64d%I64d", &n, &m), n||m) {ll ans = solve(m);ans -= solve(n-1);printf("%I64d\n", ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/Jiaaaaaaaqi/p/9473284.html

Integer’s Power HDU - 3208(容斥原理)相关推荐

  1. HDU Integer's Power(容斥原理)

    题意 求[l,r]的最大指数和(1<=l,r<=10^18) 最大指数和(如64=8^2=4^3=2^6,所以64的最大指数和是6) 题解 很明显我们可以先求出[1,n]的最大指数和,然后 ...

  2. HDU - 1796——容斥原理+二进制枚举

    [题目描述] Now you get a number N, and a M-integers set, you should find out how many integers which are ...

  3. HDU 5514 容斥原理

    题意 传送门 HDU 5514 题解 对于青蛙 iii,每一步即在模 mmm 意义上增加 aia_iai​,那么当青蛙走回起点 000 时,有 ai×step=0modma_i\times step= ...

  4. hdu 5213(容斥原理+莫队算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5213 莫队算法是离线处理一类区间不修改查询类问题的算法.就是如果你知道了[L,R]的答案.你可以在O( ...

  5. hdu 2204 容斥原理

    点击打开链接 以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776 题目:求出1-N里面能表示 成M^K的数有多少个 求A^B在 ...

  6. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  7. ACM组合数学题目列表

    基本组合计数 HDU 1028 Ignatius and the Princess III 整数划分 HIT 1402 整数划分问题 多种整数划分 置换群 PKU 2369 求置换的周期 1026 求 ...

  8. WaWa的奇妙冒险(第三周集训自闭现场)

    第三周集训自闭现场(a* ida* dbfs真的好难) (一)wlacm例题记录 A-有重复元素的排列问题 (水题,但卡我到自闭) Input Output Sample Input Sample O ...

  9. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

最新文章

  1. 2018icpc南京网络赛L题Magical Girl Haz(dijkstra+dp)
  2. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]
  3. Oracle 默认时间格式 Date格式转换
  4. ustc小道消息20211223
  5. php超链接_一个纯PHP库,用于读写文字处理文档
  6. ListView中让TextView中的文字进行单独滚动
  7. 光端机的原理和使用范围
  8. 在 Intellij IDEA 里使用 OpenJFX (JavaFX)
  9. 极致CMS个人博客企业官网模板
  10. 图论——图的遍历(洛谷 P3916)
  11. 华为云亮相QCon2020深圳站,带你体会大厂的云原生玩法与秘诀
  12. Java学习笔记:BlockingQueue接口
  13. Word01-从正文处开始插入页码
  14. C++数据库编程简介
  15. 解决由于破解软件导致的page fault in nonpaged area蓝屏
  16. BUUCTF:小易的U盘
  17. Thymeleaf即时生效
  18. 升平,景玉军.计算机虚拟技术在高职汽车维修教学中的应用研究[j].,汽车新技术教学方法探讨...
  19. Opncv 实现拍照、颜色识别和阈值选取
  20. 如何移植 Arx/ Dbx 模块为 Crx/DBX 模块来支持 AutoCAD 易(值得一看)

热门文章

  1. 从 Alpha 到 Beta,这次是 New mPaaS
  2. 对待棘手bug,新手与大牛的差距在哪里?
  3. 爆发前的最后按钮 白鹭推HTML5首款生态产品Egret Runtime
  4. 原神:创新和成功有目共睹,游戏可玩性历久弥新,戒骄戒躁保初心
  5. 【实施工程师】ARP——地址解析协议(高清版本)
  6. webstorm快捷键说明
  7. linux文件属性权限相关
  8. SoC嵌入式软件架构设计之二:虚拟内存管理原理、MMU硬件设计及代码分块管理...
  9. 职业化之可以固化的六个工作模式
  10. SharePoint 2007 开发系列(14) 调试sharepoint web part