容易发现幸运数字只有1024个,暴力标记倍数还是会tle的

容斥,即从中任选i个的lcm,复杂度为$o(2^1024)$

剪枝一:当答案超过1024就不用算了

剪枝二:当某个数是另一个数的倍数时就删掉

(另外求lcm可能会爆long long,由于爆了long long一定不合法,因此可以用除法来判定)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define ll long long
4 ll x,y,ans,a[10005];
5 ll gcd(ll x,ll y){
6 if (!y)return x;
7 return gcd(y,x%y);
8 }
9 void tot(ll k){
10 if (k>y)return;
11 if (k)a[++a[0]]=k;
12 tot(k*10+6);
13 tot(k*10+8);
14 }
15 void dfs(int k,int s,ll val){
16 if (k>a[0]){
17 ans+=(y/val-(x-1)/val)*(s*2-1);
18 return;
19 }
20 dfs(k+1,s,val);
21 ll g=val/gcd(val,a[k]);
22 if (g<=y/a[k])dfs(k+1,s^1,a[k]*g);
23 }
24 int main(){
25 scanf("%lld%lld",&x,&y);
26 tot(0);
27 sort(a+1,a+a[0]+1);
28 for(int i=a[0];i;i--)
29 for(int j=1;j<i;j++)
30 if (a[i]%a[j]==0)a[i]=0;
31 sort(a+1,a+a[0]+1);
32 for(int i=1;i<=a[0]/2;i++)swap(a[i],a[a[0]-i+1]);
33 while (!a[a[0]])a[0]--;
34 dfs(1,0,1);
35 printf("%lld",ans+(y-x+1));
36 }

最新文章

  1. 【趣事】用 JavaScript 对抗 DDOS 攻击 (下)
  2. 自己封装的一个原生JS拖动方法。
  3. xamarin 手机顶部状态栏
  4. Mysql 数据库之修改标的结构
  5. MVC项目中使用js 设置Checkbox的选中事件
  6. 使用javascript对密码进行有密码强度提示的验证
  7. UpdatePanel的使用
  8. centos之Haproxy 负载均衡学习笔记
  9. 使用Mysqldump 备份数据库
  10. Dynamics CRM Form表单中通过javascript抓取触发change事件字段的属性名
  11. mysql 新建用户并赋予远程访问权限
  12. 函数语法:JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度(转载)
  13. ASP.NET - Validators
  14. OpenGL之纹理贴图(Texture)
  15. mac eclipse maven -solved
  16. C#6.0新语法
  17. 【题解】Luogu SP8791 DYNALCA - Dynamic LCA
  18. python time 表示方式
  19. 学习knockoutjs轻量级的MVVM框架
  20. 秋色园QBlog技术原理解析:性能优化篇:缓存总有失效时,构造持续的缓存方案(十四)

热门文章

  1. 前段之jQuery
  2. .net 5.0 ref文件夹的作用
  3. 第三次Scrum Metting
  4. [对对子队]会议记录5.16(Scrum Meeting3)
  5. elf文件--基于《ctf竞赛权威指南pwn篇》
  6. Noip模拟16 2021.7.15
  7. Python | 实现pdf文件分页
  8. 从0到1使用Kubernetes系列(五):Kubernetes Scheduling
  9. 连续子序列的最大和 牛客网 剑指Offer
  10. Ubuntu virtualenv 创建 python3 虚拟环境 激活 退出