和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;
}

最新文章

  1. Atitit HTTP 认证机制基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)attilax总结
  2. Peter Norvig:自学编程,十年磨一剑
  3. web开发漫谈
  4. spring cloud config 入门
  5. PostgreSQL的 initdb 源代码分析之十二
  6. 青蛙的约会 - poj 1061(扩展欧几里得)
  7. Repeated meta-data items
  8. MySql按指定天数进行分组数据统计分析 2
  9. iOS 本地视频和网络视频流播放
  10. akoj-1319-四方定理
  11. Java中常用缓存Cache机制的实现
  12. 华为云提供针对Nuget包管理器的缓存加速服务
  13. docker配置nginx做反向代理管理tomcat应用
  14. Accumulation Degree
  15. python基础(1)-helloworld
  16. ORA-01555错误
  17. java jdk安装配置
  18. HGOI 20181028 题解
  19. kindle书摘-活着-余华-活着不易,珍惜
  20. append 注意事项

热门文章

  1. 反射Reflection
  2. Apache Solr 远程命令+XXE执行漏洞(CVE-2017-12629)
  3. 剑指offer——13矩阵中的路径
  4. Spring REST(4)
  5. PostGIS 通过SQL语句实现空间分析【入门级】
  6. mysql 触发器实现级联删除有外键的多张表
  7. await和async
  8. XSS攻击原理
  9. What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR
  10. C++ SOCKET 基础编程