在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种“近似幸运号码”。lxhgww规定,凡是“幸运号码”的倍数都是“近似幸运号码”,当然,任何的“幸运号码”也都是“近似幸运号码”,比如12,16,666都是“近似幸运号码”。 现在lxhgww想知道在一段闭区间[a, b]内,“近似幸运号码”的个数。Input输入数据是一行,包括2个数字a和bOutput输出数据是一行,包括1个数字,表示在闭区间[a, b]内“近似幸运号码”的个数Sample Input

【样例输入1】
1 10
【样例输入2】
1234 4321

Sample Output

【样例输出1】
2
【样例输出2】
809

Hint

【数据范围】
对于30%的数据,保证1 < =a < =b < =1000000
对于100%的数据,保证1 < =a < =b < =10000000000

显然容斥,剩下的就是黑科技的问题了。 
容斥的话,就是我们首先预处理出来所有的幸运数字,然后筛一遍,筛掉所有是其他幸运数字倍数的数避免重复计算。 
然后就是选1个-选2个的lcm+选3个的lcm-…. 
一个dfs搞定即可。 
但是需要注意,dfs内部的lcm我们不可以求出来,因为会爆long long ,是的我也不知道为什么。 
所以我们需要转成double 型比较是否越界。 
另外,我们筛完之后的那些数字最好按照从大到小的顺序排,如果从小到大的话常数大一点点,但就是这么一点点你就过不去,貌似是从大到小的话更能够对一些非法状态早排除吧

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define N 10001
using namespace std; ll l,r;
int t,n,m;
ll ans;
ll a[N],b[N];
bool vis[N]; ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
void pre(int x,ll y)
{
if(y>r)return;
if(x>)a[++m]=y;
pre(x+,y*+);
pre(x+,y*+);
}
void dfs(int x,int y,ll z)
{
if(x>n)
{
if(y&)ans+=r/z-(l-)/z;
else if(y)ans-=r/z-(l-)/z;
return;
}
dfs(x+,y,z);
ll tmp=z/gcd(a[x],z);
if(((double)a[x]*tmp)<=r) dfs(x+,y+,a[x]*tmp);
}
int main()
{
scanf("%lld%lld",&l,&r);
pre(,);
sort(a+,a+m+);
for(int i=;i<=m;i++)
if(!vis[i])
{
b[++n]=a[i];
for(int j=i+;j<=m;j++)
if(!(a[j]%a[i]))
vis[j]=;
}
for(int i=;i<=n;i++)
a[n-i+]=b[i];
dfs(,,);
printf("%lld",ans);
}

最新文章

  1. 解决maven的报错
  2. html5本地存储的解决
  3. UWP开发入门(十四)—— UserControl中Adaptive UI的小技巧
  4. hiho1093_spfa
  5. Linux系统时间设置(转载)
  6. import Tkinter的时候报错
  7. AJAX 一些常用方法
  8. 【BZOJ4327】JSOI2012 玄武密码 AC自动机
  9. android新闻App源码、仿微信源码、地图音乐源码等
  10. [bzoj4828][Ah/Hnoi2017]大佬
  11. JMX的l理解
  12. TCP传输
  13. c/c++链队列
  14. promise用法详解
  15. python+selenium六:等待相关
  16. 启用hive hwi方法
  17. git 命令 clone分支的代码
  18. excel技巧--一键求和
  19. 常见的CSS属性和值CascadingStyleSheets
  20. 访问网站出现EOF

热门文章

  1. python 相关编码[转]
  2. ObjectiveC中的赋值,对象拷贝,浅拷贝与深拷贝
  3. 原生JS forEach()和map()遍历,jQuery$.each()和$.map()遍历
  4. python之文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)的作用
  5. IjkPlayer播放器秒开优化以及常用Option设置
  6. js的正则表达式总结
  7. POI读word doc 03 文件的两种方法
  8. 51nod 1265 四点共面——计算几何
  9. [LUOGU] P2196 挖地雷
  10. 记服务器 httpd 服务无法启动