#搜索,容斥#洛谷 2567 [SCOI2010]幸运数字
题目
问区间\([l,r],l,r\leq 10^{10}\)中有多少个数是
数位由6或8组成的数的倍数(包括本身)
分析
数位由6或8组成的数最多有两千多种,
这可以直接一遍暴搜得到
对于区间\([1,n]\)答案应该是\(\frac{n}{i}-\frac{n}{i*j}+\frac{n}{i*j*k}\)
当选出的数的最小公倍数超过\(n\)可以剪枝,不会达到上界,
但是这样远远不够,考虑若\(i|j\)那么\(j\)显然可以直接舍弃,剩下的数可以降序排序后剪枝
然后对于超过\(n/2\)的数被选择只能选择自己(两数gcd至少为2),可以提前处理,这样就可以AC了
代码
#include <cstdio>
#include <algorithm>
#define rr register
using namespace std;
typedef long long lll; bool v[2111];
lll b[2111],l,r,ans,sum,now,m;
inline void Pro(lll now,lll n){
if (now>n) return;
b[++b[0]]=now;
Pro(now*10+6,n),
Pro(now*10+8,n);
}
inline lll gcd(lll x,lll y){return y?gcd(y,x%y):x;}
inline void dfs(int dep,lll lcm,int cnt){
if (dep>m) return;
dfs(dep+1,lcm,cnt);
rr lll t=lcm*b[dep]/gcd(lcm,b[dep]);
if (t>now) return;
if (cnt&1) ans-=now/t;
else ans+=now/t;
dfs(dep+1,t,cnt+1);
}
inline lll answ(lll n){
if (!n) return 0;
ans=0,now=n,dfs(1,1,0);
return ans;
}
signed main(){
scanf("%lld%lld",&l,&r),Pro(6,r),Pro(8,r);
sort(b+1,b+1+b[0]);
for (rr int i=1;i<=b[0];++i) if (!v[i])
for (rr int j=i+1;j<=b[0];++j) if (b[j]%b[i]==0) v[j]=1;
for (rr int i=1;i<=b[0];++i)
if (!v[i]){
if (b[i]>r/2) sum+=r/b[i]-(l-1)/b[i];
else b[++m]=b[i];
}
reverse(b+1,b+1+m);
return !printf("%lld",sum+answ(r)-answ(l-1));
}
#搜索,容斥#洛谷 2567 [SCOI2010]幸运数字的更多相关文章
- [洛谷P2567] SCOI2010 幸运数字
问题描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是&quo ...
- [洛谷P3292] [SCOI2016]幸运数字
洛谷题目链接:[SCOI2016]幸运数字 题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城 ...
- 洛谷P3292 [SCOI2016] 幸运数字 [线性基,倍增]
题目传送门 幸运数字 题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的 ...
- 洛谷P3292 [SCOI2016]幸运数字 线性基+倍增
P3292 [SCOI2016]幸运数字 传送门 题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在 ...
- 洛谷P3292 [SCOI2016]幸运数字(倍增+线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 第一眼:这不会是个倍增LCA暴力合并线性基吧…… 打了一发……A了? 所以这真的是个暴力倍增LCA合并线性基么…… ps:据某大佬说其实可以离线之后 ...
- [BZOJ1853][Scoi2010]幸运数字 容斥+搜索剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 3202 Solved: 1198[Submit][Status ...
- bzoj1853[Scoi2010]幸运数字 容斥
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 3027 Solved: 1128[Submit][Status ...
- BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】
BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...
- 【BZOJ1853/2393】[Scoi2010]幸运数字/Cirno的完美算数教室 DFS+容斥
[BZOJ1853][Scoi2010]幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那 ...
- bzoj 1853: [Scoi2010]幸运数字 容斥
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1170 Solved: 406[Submit][Status] ...
随机推荐
- DataGear 制作自定义柱状图条目颜色的数据可视化看板
DataGear 看板提供了dg-chart-options图表选项配置功能,可自定义样式.位置.显示内容等图表选项,其中的processUpdateOptions回调函数配置项,可以在图表更新数据前 ...
- 游戏H5引擎Canvas屏幕自适应CSS代码
canvas.style = `touch-action: none; width:${ width }px; height:${ height }px; cursor: inherit;`;
- 【Azure Storage Account Table】询问批量将存储账户中的表嵌入另一个账户中的办法
问题描述 询问批量将存储账户中的表嵌入另一个账户中的办法? 问题解答 方式一:使用 AzCopy 使用Az copy做表格的导入导出,注意您需要使用Azcopy 7.3版本来实现对Table的操作,可 ...
- 十: SQL执行流程
SQL执行流程 1. MySQL 中的 SQL执行流程 MySQL的查询流程: 1.1 查询缓存 Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端:如果没 有,就进入 ...
- 使用python连接hive数仓
1 版本参数 查看hadoop和hive的版本号 ls -l /opt # 总用量 3 # drwxr-xr-x 11 root root 227 1月 26 19:23 hadoop-3.3.6 # ...
- Caxa 二次开发 ObjectCRX-1 踩坑:环境配置以及 Helloworld
绝了,坑是真 nm 的多,官方给的文档里到处都是坑. 用的环境 ObjectCRX,以下简称 objcrx. #1 安装环境 & 参考文档的大坑 #1.1 Caxa 提供的文档和环境安装包 首 ...
- notion database 必知必会
notion database 必知必会 用过 mysql 的同学一定很容易上手 notion .在 notion 中,掌握好 database,基本上就掌握了 notion 最核心的概念. noti ...
- TLV320ADC3101这颗立体声 ADC芯片分析体验及总结
一 需求分析 音频ADC采集,顾名思义,就是采集语音信号的ADC.随着基于音视频穿戴式设备的广泛应用,音频ADC使用十分广泛.TI的这颗ADC芯片凭借着先发优势,在很多领域已经有广泛的应用了. 作为一 ...
- 通达信金融终端解锁Level-2功能 续(202307)
外挂方式,不修改原程序.解锁Level-2 逐笔分析.对"非法访问"Say NO! LEVEL2逐笔分析破解后,仍然被防调试. 竞价分析,实时资金示例. 逆向通达信Level-2 ...
- 告别繁琐!1分钟带你构建RabbitMQ消息应用
支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac. RabbitMQ作为一款主流的消息队列工具早已广受欢迎.相比于其它的 ...