【BZOJ-18532393】幸运数字Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字
Time Limit: 2 Sec Memory Limit: 64 MB
Submit: 1817 Solved: 665
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 10
【样例输入2】
1234 4321
Sample Output
2
【样例输出2】
809
HINT
【数据范围】
对于30%的数据,保证1 < =a < =b < =1000000
对于100%的数据,保证1 < =a < =b < =10000000000
Source
Day1
2393: Cirno的完美算数教室
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 299 Solved: 183
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
Solution
容斥原理 爆搜 剪枝
先预处理出baka数(幸运数),再去一下重(删除能被其他baka数整除的)
容斥之前有一个结论:
N内a或b的倍数的个数=N/a+N/b-N/lcm(a,b),即:a在N以内的倍数+b在N以内的倍数-a和b两个在N以内的相同的倍数(所以从 最小公倍数 开始)
然后就可以容斥,爆搜+剪枝 就可以A了 一个最行之有效的剪枝就是一开始所说的去重 也可以吧超过R的部分直接忽略
By The Way:baka数可以正常A,幸运数那题,需要改成unsigned long long,不然会TLE (可是本机明明跑的一样快)
Code
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; #define maxn 100100 unsigned long long L,R; int top,Top; unsigned long long stack[maxn],ans; void Prework(long long x) {if (x<=R) stack[++top]=x; else return;Prework(x*10+6); Prework(x*10+8); } bool cmp(long long a,long long b) {return a>b;} long long gcd(long long a,long long b) {if (!b) return a; return gcd(b,a%b);} void DFS(int dep,int t,long long x) {if (dep==Top+1) {if (t%2) ans+=R/x-(L-1)/x;else if (t) ans-=R/x-(L-1)/x;return;}DFS(dep+1,t,x);if (stack[dep]*x/gcd(stack[dep],x)<=R)DFS(dep+1,t+1,stack[dep]*x/gcd(stack[dep],x)); } int main() { // freopen("a.in","r",stdin); // freopen("a.out","w",stdout);scanf("%lld%lld",&L,&R);Prework(6); Prework(8);sort(stack+1,stack+top+1); // for (int i=1; i<=top; i++) printf("%d ",stack[i]); puts("");for (int i=1; i<=top; i++) if (stack[i]){for (int j=i+1; j<=top; j++)if (stack[j]%stack[i]==0) stack[j]=0;stack[++Top]=stack[i];}sort(stack+1,stack+Top+1,cmp); // for (int i=1; i<=Top; i++) printf("%d ",stack[i]); puts("");DFS(1,0,1);printf("%lld\n",ans);return 0; }
BZOJ1853
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; #define maxn 10010 int L,R,top,Top; long long stack[maxn],ans; void Prework(long long x) {if (x<=R) stack[++top]=x; else return;Prework(x*10+2); Prework(x*10+9); } bool cmp(long long a,long long b) {return a>b;} long long gcd(long long a,long long b) {if (!b) return a; return gcd(b,a%b);} void DFS(int dep,int t,long long x) {if (dep==Top+1) {if (t%2) ans+=R/x-(L-1)/x;else if (t) ans-=R/x-(L-1)/x;return;}DFS(dep+1,t,x);if (stack[dep]*x/gcd(stack[dep],x)<=(long long)R)DFS(dep+1,t+1,stack[dep]*x/gcd(stack[dep],x)); } int main() {scanf("%d%d",&L,&R);Prework(2); Prework(9);sort(stack+1,stack+top+1); // for (int i=1; i<=top; i++) printf("%d ",stack[i]); puts("");for (int i=1; i<=top; i++) if (stack[i]){for (int j=i+1; j<=top; j++)if (stack[j]%stack[i]==0) stack[j]=0;stack[++Top]=stack[i];}sort(stack+1,stack+Top+1,cmp); // for (int i=1; i<=Top; i++) printf("%d ",stack[i]); puts("");DFS(1,0,1);printf("%lld\n",ans);return 0; }
去CodeVS群问了波..感觉弱智+10
转载于:https://www.cnblogs.com/DaD3zZ-Beyonder/p/5473967.html
【BZOJ-18532393】幸运数字Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝相关推荐
- bzoj2393 Cirno的完美算数教室
2393: Cirno的完美算数教室 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 322 Solved: 194 [ Submit][ St ...
- 【BZOJ2393】Cirno的完美算数教室
~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~ 现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~ 但是Cirno这么天才的妖精才不屑去数啦 只能依靠聪明的你咯 ...
- bzoj 4568: [Scoi2016]幸运数字(树上倍增+线性基)
4568: [Scoi2016]幸运数字 Time Limit: 60 Sec Memory Limit: 256 MB Submit: 1692 Solved: 643 [Submit][Sta ...
- mysql纯数字用什么类型_用幸运数字起名美到极致,个性又独特,你的幸运数字是什么?...
数字是一种符号,蕴藏着特殊的能量,而且数字历史悠久,生活中的时间.长度都是用数字用来计算度量的,因此十分有意蕴.我们每个人都有一个幸运数字,如果用来取名的话,可以将数字中的内涵和名字结合,给用名之人带 ...
- 【bzoj1853】[Scoi2010]幸运数字 容斥原理+搜索
题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是&quo ...
- 幸运数字Ⅱ(树型结构构造答案,打表)难度⭐⭐
幸运数字Ⅱ 打表即可,观察数据,是一组简单的二叉树的树形结构,所以引申出这一类的题,比如题目为1,2,3,这三个数,那么就是一个三叉树 0 4 7 44 47 74 77 444 447 474 47 ...
- [luogu2576 SCOI2010] 幸运数字 (容斥原理)
传送门 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,66 ...
- 牛客网 牛客练习赛13 A.幸运数字Ⅰ
A.幸运数字Ⅰ 链接:https://www.nowcoder.com/acm/contest/70/A 来源:牛客网 水题. 代码: 1 #include<iostream> 2 #in ...
- BZOJ4568:[SCOI2016]幸运数字——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4568 https://www.luogu.org/problemnew/show/P3292 A ...
最新文章
- 渗透测试工具Burp Suite详解
- 关于「无人驾驶」的学习路线...
- java string类api_java基础—String类型常用api
- php如何判断二维数组为空,PHP判断数组为空的具体方式
- from 下拉框多个值提交_Git commit 多行信息提交
- r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分
- ADT 压缩包 R23.0.0
- java登陆挤下去代码_application作用域实现用户登录挤掉之前登录用户代码
- 微信小程序 webview 传递URL中含有特殊字符-,=
- aix 在线软件包安装 字符集 mysql安装
- jdk32位安装包下载_MySQL 8.0.19安装图文详解!手把手教会您从下载到安装成功
- PostgreSQL与MySQL的区别收集
- 如何通过OCJP认证考试
- Qt 开发activex控件(以中控的指纹仪URU4000B为例)
- http://t.cn/xxx的短链接如何生成?(附15款新浪短链接生成器)
- 恭贺德林教点穴网成立
- linux的sssd服务,sssd – 刷新ldap客户端配置Centos
- PostgreSQL数据库扩展包——原理CreateExtension扩展控制文件解析
- Firefox火狐Flash插件卡死问题完美解决方法
- 最高百万年薪,全国多家知名互联网/游戏公司热招 Cocos 人才丨9月岗位
热门文章
- 习题:编写一个程序,请输入两个数字,并判断两个数字的大小。
- Java单例模式深入详解
- Google推出一款用户隐私保护工具箱
- Python实战之多线程编程threading.Thread
- 用Python实现应用Last-Modified和ETag避免下载重复内容
- Mac OSX上安装Python的方法
- python和java反射_python实现反射功能
- vue 中provide的用法_说一说VUE中的/deep/用法
- 日期上午下午怎么用date存_Java12都要出来了,你还在使用Date操作日期吗?
- python django 优势_为什么选择Django?