bzoj1853 bzoj2393
两题是类似的,这里说一下bzoj1853
首先我们求出所有的幸运号码,注意如果存在x是y的倍数则x不算在内,避免之后重复计算
下面我们就要统计幸运号码的倍数了,这显然是要用到容斥原理的
但是幸运号码很多,如果直接暴力找几个幸运号码的公倍数做容斥原理弄会TLE的;
因此我们想到在搜索中剪枝,如果几个幸运号码的公倍数已经大于r,
那么我们一定不会再用这几个幸运号码和别的幸运号码求公倍数了
为了体现这个剪枝的威力,我们穷举幸运号码的时候应该从大往小搜索;
var b:array[..] of int64;
a:array[..] of longint;
m,t,k,i:longint;
s,x,l,r,ans:int64;
f:boolean; function gcd(a,b:int64):int64;
begin
if b= then exit(a)
else exit(gcd(b,a mod b));
end; procedure dfs(j,t:longint;x:int64);
var y:int64;
begin
if j= then
begin
if t mod = then ans:=ans+r div x-(l-) div x //容斥原理
else if t> then ans:=ans-r div x+(l-) div x
end
else begin
dfs(j-,t,x);
y:=x div gcd(b[j],x);
if double(b[j])*double(y)<=r then //double是防止爆int64
dfs(j-,t+,b[j]*y);
end;
end; begin
readln(l,r);
t:=;
x:=r;
while x<> do
begin
inc(t);
x:=x div ;
end;
fillchar(a,sizeof(a),);
m:=;
while a[]=- do
begin
s:=;
for i:= to t do
if a[i]= then s:=s*+
else if a[i]= then s:=s*+;
if s>r then break
else if s<> then
begin
f:=true;
for i:= to m do
if s mod b[i]= then
begin
f:=false;
break;
end;
if f then
begin
inc(m);
b[m]:=s;
end;
end;
k:=t;
while a[k]= do
begin
a[k]:=;
dec(k);
end;
inc(a[k]);
end;
dfs(m,,);
writeln(ans);
end.
bzoj1853 bzoj2393的更多相关文章
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
- BZOJ1853:[SCOI2010]幸运数字 & BZOJ2393:Cirno的完美算数教室——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1853 https://www.lydsy.com/JudgeOnline/problem.php? ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- 【bzoj1853】 Scoi2010—幸运数字
http://www.lydsy.com/JudgeOnline/problem.php?id=1853 (题目链接) 今天考试考了容斥,结果空知道结论却不会写→_→ 题意 求区间中不含6,8两个数字 ...
- BZOJ1853 [Scoi2010]幸运数字 容斥原理
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1853 题意概括 求一个区间范围内,近似幸运数字的个数. 定义: 幸运数字:仅由6或者8组成的数字. ...
- 【BZOJ1853】幸运数字(搜索,容斥)
[BZOJ1853]幸运数字(搜索,容斥) 题面 BZOJ 洛谷 题解 成功轰下洛谷rk1,甚至超越了一个打表选手 这题思路很明显吧,先搞出来所有范围内的合法数字,然后直接容斥, 容斥的话显然没有别的 ...
- BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】
BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...
- 【bzoj1853】: [Scoi2010]幸运数字 数论-容斥原理
[bzoj1853]: [Scoi2010]幸运数字 预处理出所有幸运数字然后容斥原理 但是幸运数字是2logn个数的 直接搞会炸 所以把成倍数的处理掉 然后发现还是会T 所以数字要从大到小处理会快很 ...
随机推荐
- mRemote配置
配置完mRemote后 备份C:\Users\Administrator\AppData\Local\Felix_Deimel\mRemote\confCons.xml文件 覆盖到其他电脑可以直接使用
- angularJs ionic phoneGap 分享
由于坑较多 就如“天下难事,必作于易吧” 最近有机会接触到了git node angularJs ionic phoneGap 很开森也很痛苦 分享如下 推荐的几个博客地址: ionic开发插件之n ...
- MES项目中出现的一个事务嵌套的使用场景
昨天在MES项目中,需要在业务逻辑的几个关键点记录错误信息,需要把错误信息写入数据表. 但是由于整个业务逻辑都是包在一个事务模板里面的 比如这样的: WhhTransactionTemplate tr ...
- word每次打开都要选择文档类型
每次打开word07 都出现下面一个框框,说要转换文件. 在Word2013文档中,为了能更好地使用“从任意文件还原文本”功能,用户需要启用“打开时确认文件格式转换”功能,以在打开并恢复文件时出现文件 ...
- 转--浅谈ETL
ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...
- MongoDB的索引
一.索引详讲 索引是什么,索引就好比一本书的目录,当我们想找某一章节的时候,通过书籍的目录可以很快的找到,所以适当的加入索引可以提高我们查询的数据的速度. 准备工作,向MongoDB中插入20000条 ...
- Java面向对象程序设计--与C++对比说明:系列1(面向对象基础)
面向对象程序设计作为一种重要的程序设计思想,在近些年来得到广泛的推崇.而Java和C++更是面向对象程序设计语言中的翘楚,要彻底摸清面向对象程序设计的精髓和在实际应用中更加高效的进行代码设计 ...
- Google HTML/CSS/JS代码风格指南
JS版本参见:http://www.zhangxinxu.com/wordpress/2012/07/google-html-css-javascript-style-guides/ HTML/CSS ...
- JavaScript Ajax + Promise
AJAX 在现代浏览器上写AJAX主要依靠XMLHttpRequest对象: function success(text) { var textarea = document.getElementBy ...
- js跳转页面方法
<span id="tiao">3</span><a href="javascript:countDown"></ ...