Integer’s Power HDU - 3208(容斥原理)
找出(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 = ;
- const int maxm = ;
- const int mod = ;
- const double eps = 1e-;
- using namespace std;
- ll n, m;
- int T, tol;
- ll num[];
- ll INF = 1e18;
- ll qpow(ll a, ll b) {
- ll ans = ;
- while(b) {
- if(b&) {
- double tmp = 1.0 * INF / ans;
- if(a > tmp) return -;
- ans = ans * a;
- }
- b >>= ;
- if(a > ((ll)<<) && b) return -;
- a = a*a;
- }
- return ans;
- }
- ll calc(ll x, int pos) {
- ll a = (ll)pow((double)x, 1.0/pos);
- ll ansl = qpow(a-, pos);
- ll ansm = qpow(a, pos);
- ll ansr = qpow(a+, pos);
- if(ansr != - && ansr <= x) return a+;
- if(ansm != - && ansm <= x) return a;
- return a-;
- }
- ll solve(ll x) {
- memset(num, , sizeof num);
- num[] = x;
- int pos = ;
- for(; pos <= ; pos++) {
- ll tmp = calc(x, pos) - ;
- if(tmp <= ) break;
- num[pos] = tmp;
- }
- pos--;
- for(int i=pos; i>=; i--) {
- for(int j=; 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 = ;
- for(int i=; 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-);
- printf("%I64d\n", ans);
- }
- return ;
- }
Integer’s Power HDU - 3208(容斥原理)的更多相关文章
- HDU 3208 Integer’s Power
Integer’s Power Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Origina ...
- hdu 3208 Integer’s Power 筛法
Integer’s Power Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- GCD HDU - 1695 容斥原理(复杂度低的版本)
题意: 让你从区间[a,b]里面找一个数x,在区间[c,d]里面找一个数y.题目上已经设定a=b=1了.问你能找到多少对GCD(x,y)=k.x=5,y=7和y=5,x=7是同一对 题解: 弄了半天才 ...
- - Visible Trees HDU - 2841 容斥原理
题意: 给你一个n*m的矩形,在1到m行,和1到n列上都有一棵树,问你站在(0,0)位置能看到多少棵树 题解: 用(x,y)表示某棵树的位置,那么只要x与y互质,那么这棵树就能被看到.不互质的话说明前 ...
- HDU Integer's Power(容斥原理)
题意 求[l,r]的最大指数和(1<=l,r<=10^18) 最大指数和(如64=8^2=4^3=2^6,所以64的最大指数和是6) 题解 很明显我们可以先求出[1,n]的最大指数和,然后 ...
- 【HDOJ】3208 Integer’s Power
1. 题目描述定义如下函数$f(x)$:对于任意整数$y$,找到满足$x^k = y$同时$x$最小并的$k$值.所求为区间$[a, b]$的数代入$f$的累加和,即\[\sum_{x=a}^{b} ...
- HDU 4059 容斥原理+快速幂+逆元
E - The Boss on Mars Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1796 容斥原理
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- HDU 1796 容斥原理 How many integers can you find
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1796 处男容斥原理 纪念一下 TMD看了好久才明白DFS... 先贴代码后解释 #includ ...
随机推荐
- Linux kernel support docker storage driver aufs
How to make docker use aufs in CentOS 7? - Server Faulthttps://serverfault.com/questions/650208/how- ...
- react-router的坑
componentWillReceiveProps(nextProps){ 在改钩子函数里接受组件变化的最近的传递的props 如果在这里没有使用nextprops 而是调用this.props 会出 ...
- asp.net core前后端分离
陆陆续续的看了两个礼拜的前端知识,把vue+vue-router+axios的知识撸了一遍,本来想加个element-ui来实现一下前后端分离,实施的时候却遇到了很多的坑.我本身不在一个软件开发公司上 ...
- mysql异常:Packet for query is too large (10240 > 1024). You can change this value
出现这个问题的原因是:mysql的配置文件中 max_allowed_packet 设置过小,mysql根据配置文件会限制server接受的数据包大小. 还有人会说我操作的数据量明显没有超过这个值为啥 ...
- 【Java编译】含package的类文件编译
含package的类文件编译: package com.zhangxueliang.setdemo; public class Demo1 { public static void main(Stri ...
- Oracle创建表sql语句
create table t_owners ( id number primary key, name ), addressid number, housenumber ), watermeter ) ...
- WPF实现滚动显示的TextBlock
在我们使用TextBlock进行数据显示时,经常会遇到这样一种情况就是TextBlock的文字内容太多,如果全部显示的话会占据大量的界面,这是我们就会只让其显示一部分,另外的一部分就让其随着时间的推移 ...
- bpmn.js & BPMN diagram
bpmn.js & BPMN diagram BPMN 2.0 for the web https://github.com/bpmn-io/bpmn-js https://demo.bpmn ...
- pip 升级
pip install --upgrade qrcode pip install --upgrade qrcode==5.3
- 一、使用Navicat连接阿里云服务器宝塔面板里创建的数据库
一.数据库配置连接 (通过新增用户的方式)