http://www.elijahqi.win/archives/3883
Description
在中国,很多人都把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和b
Output
输出数据是一行,包括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

Source
Day1

可以发现其实就是 先搜索出所有的数 然后找他们的倍数即可

我们发现两两的lcm被多算了 然后减去 又发现三个的lcm多减了 所以加上

就这样 这题数据比较强 需要剪枝 就是double 那个乘起来大于右边界的时候结束即可

注意需要将原搜索序列翻转 效果更好

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+10;
ll a[N],l,r,ans;bool vis[N];int m,n;
inline void init(int x,ll v){if (v>r) return;if (x) a[++m]=v;init(x+1,v*10+6);init(x+1,v*10+8);
}
inline ll gcd(ll x,ll y){return !y?x:gcd(y,x%y);
}
inline void dfs(int x,int nm,ll v){if (x>n){if(v==1) return;int op=nm&1?1:-1;ans+=r/v*op;ans-=(l-1)/v*op;return;}dfs(x+1,nm,v);ll g=v/gcd(a[x],v);if((double)g*a[x]<=r) dfs(x+1,nm+1,g*a[x]);
}
int main(){//freopen("bzoj1853.in","r",stdin);scanf("%lld%lld",&l,&r);init(0,0);sort(a+1,a+m+1);for (int i=1;i<=m;++i){if (vis[i]) continue;for (int j=i+1;j<=m;++j) if (a[j]%a[i]==0) vis[j]=1;a[++n]=a[i];}reverse(a+1,a+n+1);dfs(1,0,1);printf("%lld\n",ans);return 0;
}

bzoj1853 [Scoi2010]幸运数字相关推荐

  1. bzoj1853: [Scoi2010]幸运数字 dp+容斥原理

    在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是"幸运号 ...

  2. BZOJ1853: [Scoi2010]幸运数字(容斥原理)

    题意 询问区间$(l, r)$中有多少个数是只含$6, 8$的数的倍数 Sol 思路很妙啊. 首先在$10^{10}$内只含$6, 8$的数有$\sum_{i = 1}^{10} 2^i = 2046 ...

  3. P2567 [SCOI2010]幸运数字

    P2567 [SCOI2010]幸运数字 题意: 我们规定只含6或8的数字为幸运号码,而幸运号码的倍数我们也认为是幸运号码,问[l,r]中有多少个幸运号码? 题解: 第一反应是数位dp,但其实不是,我 ...

  4. 【bzoj1853】[Scoi2010]幸运数字 容斥原理+搜索

    题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是&quo ...

  5. [luogu2576 SCOI2010] 幸运数字 (容斥原理)

    传送门 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,66 ...

  6. [SCOI2010]幸运数字

    题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是&quo ...

  7. 【BZOJ-18532393】幸运数字Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 1817  Solved: 665 [Submit][Statu ...

  8. 数论五之容斥——硬币购物,Gerald and Giant Chess,幸运数字,Sky Full of Stars,已经没有什么好害怕的了

    容斥的神 [HAOI2008]硬币购物 problem solution code CF559C Gerald and Giant Chess problem solution code [SCOI2 ...

  9. [BZOJ1853][SCOI2010][容斥原理]幸运数字

    Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,88 ...

最新文章

  1. webElement.text()获取到内容为空
  2. 【蓝桥杯】【入门题】【算法提高VIP】1481:剪刀石头布
  3. I've got so many hongbaos(should it be translated as red bags?)
  4. Bash Cookbook 学习笔记 【中级】
  5. go比java快多少_Java 11快多少?
  6. 如何把一个java程序打包成exe文件,运行在没有java虚
  7. lol最克制诺手的英雄_LOL:究竟有没有完美克制诺手的英雄?时光上单或可一战?...
  8. 【系列4】使用Dockerfile创建带tomcat的Centos Docker镜像
  9. 登录小米账号 服务器问题怎么办,小米官网无法登陆是怎么回事 小米官网无法登陆解决方法...
  10. iweboffice之word——功能简介
  11. 计算机播放qq音乐没声音怎么办,电脑突然没声音了.开启QQ音乐说要检查音效卡驱动程式设定是否正常....
  12. 史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!
  13. 转载-极化码系列(2)-极化码的编码原理
  14. matlab中global
  15. iOS可持续化集成: Jenkins + bundler + cocoapods + shenzhen + fastlane + pgyer
  16. UE4相机贴图,屏幕标注
  17. pick out.php,pick_out.php
  18. 操作系统学习-1. 操作系统的目标和作用
  19. [AHK]调用小米笔记本电脑的音量调节功能
  20. 美团再次冲击网约车市场,滴滴或将加快上市进程

热门文章

  1. excel打开2个独立窗口_500个红包丨第2张专辑“基金入门指南”来了,打开投资新世界...
  2. 服务器 SaaS、PaaS、IaaS 区别
  3. 《HEAD FIRST JAVA》第一次回顾和整理
  4. LQ0204 振兴中华【递归】
  5. ThinkPHP6之数据库操作上
  6. 九州计算机入职培训总结,【精华】银行培训心得体会四篇
  7. 程序员一般通过什么途径接私活?怎样搞兼职
  8. stm32 驱动 触摸屏
  9. Server2008额外域控制器抢占主域控制器(操作全过程)
  10. 美的变频空调保护性停机分析与检修案例