题目链接

  先预处理出幸运数,把成倍数关系的剔掉,然后用容斥原理搜索一下。

  这里的容斥很像小学学的那个“班上有n个同学,有a个同学喜欢数学,b个同学喜欢语文……”那样。

  

#include<cstdio>
#include<cstdlib>
#include<cctype>
#include<algorithm>
#include<cstring>
#define maxn 200020
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long q[maxn];int tot;
long long d[maxn];int cnt;
bool vis[maxn]; void find(int deep,long long now){
if(deep==){
q[++tot]=now;
return;
}
find(deep-,now*+);
find(deep-,now*+);
} bool cmp(long long a,long long b){ return a>b; } long long calc(long long l,long long r,long long e){
if(l%e==) l/=e;
else l=l/e+;
r/=e;
return r-l+;
} long long gcd(long long a,long long b){
return b==?a:gcd(b,a%b);
} long long ans=;
long long a,b; void dfs(int deep,int Cnt,long long val){
if(val>b) return;
if(deep>cnt){
if(Cnt==) return;
ans+=calc(a,b,val)*(Cnt&?:-);
return;
}
dfs(deep+,Cnt,val);
long long tmp=val/gcd(val,d[deep]);
if(1.0*tmp*d[deep]<=b) dfs(deep+,Cnt+,tmp*d[deep]);
} int main(){
a=read(),b=read();
for(int i=;i<=;++i) find(i,);
for(int i=;i<=tot;++i){
if(vis[i]==) d[++cnt]=q[i];
for(int j=i+;j<=tot;++j)
if(q[j]%q[i]==) vis[j]=;
}
sort(d+,d+cnt+,cmp);
dfs(,,);
printf("%lld\n",ans);
return ;
}

最新文章

  1. spring-表达式语言-SpEL【转】
  2. html标签
  3. IOS调试lldb命令常用,po,
  4. DOM,BOM
  5. JS 面向对象 编程设计
  6. c#多线程生产者消费者(手稿)
  7. STL 源码分析《2》----nth_element() 使用与源码分析
  8. STL容器的遍历删除
  9. 1 对WinMain的理解
  10. SZU:L89 Frog Encoding
  11. C#自定义配置文件节点
  12. (简单易懂)Java的快速失败(fail-fast)与安全失败,源码分析+详细讲解
  13. href的理解
  14. LeetCode(28)-Remove Duplicates from Sorted Array
  15. Python学习笔记-SQLSERVER的大批量导入以及日常操作(比executemany快3倍)
  16. python第十五天
  17. openJDK之如何下载各个版本的openJDK源码
  18. 利用MathType为公式编号并引用
  19. PCA和PCoA
  20. 如何清空iframe中的内容?

热门文章

  1. duboo 配置文件
  2. ArcGis server发布地图服务
  3. Python2 和Python3 的区别
  4. lua拷贝二进制文件的方法
  5. 解决windows系统下打开应用弹出丢失libmysql.dll的问题
  6. 探讨 JS 的面向对象中继承的那些事
  7. 【线性基】bzoj2844: albus就是要第一个出场
  8. linux时区
  9. spartan6不能直接把时钟连到IO上
  10. 用decimal模块增加python的浮点数精度