容斥原理——hdu3208
和hdu2204有点像
这题要特别注意精度问题,如pow的精度需要自己搞一下,然后最大的longlong可以设为1<<31
/*
只要求[1,n]范围内的sum即可
那么先枚举幂次k[1,63]
然后求 x^k<=n,x的最大取值sum[i](这里要扩大一下pow的精度)
然后进行容斥,j%i==0,si-=sj
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF (ll)1<<31
#define esp 1e-18
ll sum[];
const double inf=1e18+;
/*
ll Pow(ll a,ll b){//防越界的快速幂
ll res=1;
while(b){
if(b%2){
double judge=1.0*inf/res;
if(a>judge)return -1;//必须先判断res*a是否会越界
res=res*a;
}
b>>=1;
if(a>INF && b>0)return -1;//判断a是否越界了
a=a*a;
}
return res;
} ll calc(ll k,ll n){
ll x=(ll)pow(n,1.0/k),t,p;
p=Pow(x,k);
if(p==n)return x;//刚好相等
if(p>n || p==-1) x--;//越界了
else {//判断x是否能再+1
t=Pow(x+1,k);
if(t!=-1 && t<=n)x++;
}
return x;
} */ ll multi(ll a,ll b)//快速乘
{
ll ans=;
while(b){
if(b&){
double judge=1.0*inf/ans;
if(a>judge) return -;
ans*=a;
}
b>>=;
if(a>INF&&b>) return -;
a=a*a;
}
return ans;
}
ll Find(ll x,ll k)//手动扩大pow精度
{
ll r=(ll)pow(x,1.0/k);
ll t,p;
p=multi(r,k);
if(p==x) return r;
if(p>x||p==-) r--;
else
{
t=multi(r+,k);
if(t!=-&&t<=x) r++;
}
return r;
}
ll solve(ll n){
if(n==)return ;
ll res=,Max=;
memset(sum,,sizeof sum);
sum[]=n;
for(ll k=;k<=;k++){
sum[k]=Find(n,k);//求扩精度后的最大的x
if(sum[k])sum[k]--;//1特判
if(sum[k]==){Max=k;break;}
}
//容斥
for(int j=Max;j>=;j--)
for(int i=;i<j;i++)
if(j%i==)sum[i]-=sum[j];
for(int i=;i<=Max;i++)res+=sum[i]*i;
return res;
} int main(){
ll L,R;
while(cin>>L>>R && R)
cout<<solve(R)-solve(L-)<<endl;
}
容斥原理——hdu3208的更多相关文章
- hdu4059 The Boss on Mars(差分+容斥原理)
题意: 求小于n (1 ≤ n ≤ 10^8)的数中,与n互质的数的四次方和. 知识点: 差分: 一阶差分: 设 则 为一阶差分. 二阶差分: n阶差分: 且可推出 性质: 1. ...
- hdu2848 Visible Trees (容斥原理)
题意: 给n*m个点(1 ≤ m, n ≤ 1e5),左下角的点为(1,1),右上角的点(n,m),一个人站在(0,0)看这些点.在一条直线上,只能看到最前面的一个点,后面的被档住看不到,求这个人能看 ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3028 Solved: 1460[Submit][Sta ...
- ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...
- HDU5838 Mountain(状压DP + 容斥原理)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5838 Description Zhu found a map which is a N∗M ...
- 【BZOJ-2669】局部极小值 状压DP + 容斥原理
2669: [cqoi2012]局部极小值 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 561 Solved: 293[Submit][Status ...
- HDU 2204Eddy's爱好(容斥原理)
Eddy's爱好 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)
Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...
随机推荐
- java 读取mysql中数据 并取出
public static String url = null; public static String username = null; public static String password ...
- 关于strtok函数
函数原型: char *strtok(char * strToken, const char *strDelimit) 参数说明: strToken:源字符串,即待分割的串 strDelimit:st ...
- 唯一id
package com.debug.kill.server.utils; /** * Created by Administrator on 2019/6/20. */ import org.apac ...
- OpenLiveWriter博客工具
1.OpenLiveWriter安装 官网下载地址:http://openlivewriter.org/ 默认安装到:C:\Users\用户\AppData\Local\OpenLiveWriter目 ...
- JAVA API about HTTP 3
package com.han.http; import java.io.IOException; import java.io.UnsupportedEncodingException; impor ...
- yii2 vendor/bower/jquery/dist not exist
查看 vendor 文件夹,只有bower-asset文件夹 手动修改 bower-asset 为bower 倒也可以,yii2项目每次 composer install 成功之后,每次重命名这个文件 ...
- CF930E Coins Exhibition
题意:平面上一共有k个硬币(k<=1e9),给你n个区间这些区间中至少有一个硬币反面朝上,m个区间中至少有一个硬币正面朝上.问有多少种硬币放置方案?n,m<=100005. 标程: #in ...
- excel批量删除sql语句
数据如下表一样 在E1列输入update sql 模板 ="update test set A= '"&A1&"' ,B = '"&B1 ...
- Elasticsearch日志之删除索引
1.查询索引 [root@ecs-- elasticsearch]# curl -XGET http://localhost:9200/* {,,},},},,,},},},,,},},},,,},} ...
- Linux课程---15、域名相关
Linux课程---15.域名相关 一.总结 一句话总结: 先购买域名,再备案,再解析,域名即可使用 1.域名备案是怎么回事(比如二级域名,三级域名)? 每个二级域名需要备案一次,三级域名不需要备案, ...