【BZOJ 1853】 1853: [Scoi2010]幸运数字 (容斥原理)
1853: [Scoi2010]幸运数字
Time Limit: 2 Sec Memory Limit: 64 MB
Submit: 2472 Solved: 911Description
在中国,很多人都把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和bOutput
输出数据是一行,包括1个数字,表示在闭区间[a, b]内“近似幸运号码”的个数Sample Input
【样例输入1】
1 10
【样例输入2】
1234 4321Sample Output
【样例输出1】
2
【样例输出2】
809HINT
【数据范围】
对于30%的数据,保证1 < =a < =b < =1000000
对于100%的数据,保证1 < =a < =b < =10000000000Source
【分析】
这道题,是很经典的容斥。只是复杂度有些玄学。
就是现求出所有lucky number,然后对于比如说66是6的倍数,66可以删掉。
然后找6的倍数,+1,8的倍数+1,6和8的公倍数,-1。。。。【就是这样容斥
你lucky number排序后从大到小枚举,超过b就return,就可以过了。
【对了,不要直接求lcm,达到了10^10,会爆LL,我就这样超时了。。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long LL a,b;
LL w[];
void ffind(LL x)
{
if(x*+<=b) {w[++w[]]=x*+;ffind(x*+);}
if(x*+<=b) {w[++w[]]=x*+;ffind(x*+);}
} LL gcd(LL a,LL b)
{
if(b==) return a;
return gcd(b,a%b);
}
LL ans=;
void dfs(LL x,LL y,LL f)
{
if(x==)
{
ans+=f*(b/y-(a-)/y);
return;
}
LL g=gcd(y,w[x]);
if(y/g<=b/w[x]) dfs(x-,y/g*w[x],-f);
dfs(x-,y,f);
} int main()
{
scanf("%lld%lld",&a,&b);
w[]=;ffind();
sort(w+,w++w[]);
int nw=;
for(int i=;i<=w[];i++)
{
if(w[i]==-) continue;
w[++nw]=w[i];
for(int j=i+;j<=w[];j++) if(w[j]!=-&&w[j]%w[i]==)
{
w[j]=-;
}
}w[]=nw;
dfs(w[],,-);
printf("%lld\n",b-a++ans);
return ;
}
2017-04-19 20:32:25
【BZOJ 1853】 1853: [Scoi2010]幸运数字 (容斥原理)的更多相关文章
- Bzoj 1853: [Scoi2010]幸运数字 容斥原理,深搜
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1774 Solved: 644[Submit][Status] ...
- 1853: [Scoi2010]幸运数字[容斥原理]
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2405 Solved: 887[Submit][Status] ...
- BZOJ1853 [Scoi2010]幸运数字 容斥原理
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1853 题意概括 求一个区间范围内,近似幸运数字的个数. 定义: 幸运数字:仅由6或者8组成的数字. ...
- 【BZOJ1853】[Scoi2010]幸运数字 容斥原理+搜索
Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,88 ...
- [luogu2576 SCOI2010] 幸运数字 (容斥原理)
传送门 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,66 ...
- [SCOI2010]幸运数字 [容斥原理 dfs]
题意:"幸运号码"是十进制表示中只包含数字6和8的那些号码,求\([l,r]:r \le 10^10\)之间"幸运号码"的倍数个数 发现幸运号码貌似很少唉,去掉 ...
- BZOJ 1853: [Scoi2010]幸运数字
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2117 Solved: 779[Submit][Status] ...
- bzoj 1853: [Scoi2010]幸运数字 容斥
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1170 Solved: 406[Submit][Status] ...
- AC日记——[SCOI2010]幸运数字 bzoj 1853
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2405 Solved: 887[Submit][Status] ...
随机推荐
- Spring REST 异常处理
在上一篇中写到了Spring MVC的异常处理,SpringMVC捕获到异常之后会转到相应的错误页面,但是我们REST API ,一般只返回结果和状态码,比如发生异常,只向客户端返回一个500的状态码 ...
- 30款基于 jQuery & CSS3 的加载动画和进度条插件
我们所生活每一天看到的新技术或新设计潮流的兴起,Web 开发正处在上升的时代.HTML5 & CSS3 技术的发展让 Web 端可以实现的功能越来越强大. 加载动画和进度条使网站更具吸引力.该 ...
- 【BZOJ】2154: Crash的数字表格 莫比乌斯反演
[题意]给定n,m,求Σlcm(i,j),1<=i<=n,1<=j<=m,n,m<=10^7. [算法]数论(莫比乌斯反演) [题解] $$ans=\sum_{i\leq ...
- 浮动&定位
本文地址:http://www.cnblogs.com/veinyin/p/7606652.html 浮动和定位能够让我们把一些元素放到理想的位置,当然,相比之下 float 只能浮动到左边或右边, ...
- node、npm及node_modules中依赖的版本更新
好久没用node了,想重新拾起来发现node还有相关模块的版本都太低了,使用npm install全是报版本低的警告. 这里记录一下,版本管理和node_modules更新的方法. 我用的是Windo ...
- 深入理解Spring系列之七:web应用自动装配Spring配置
转载 https://mp.weixin.qq.com/s/Lf4akWFmcyn9ZVGUYNi0Lw 在<深入理解Spring系列之一:开篇>的示例代码中使用如下方式去加载Spring ...
- 将neuroph导入到Eclipse中
1.下载neuroph 网址:http://neuroph.sourceforge.net/ 本人选择的是2.8版本 2.解压文件 本人解压至:D:\neuroph-2.8 3.neuroph jar ...
- 【转载】selenium with PhantomJs wait till page fully loaded?
I use Selenium with Phantomjs, and want to get the page content after the page fully loaded. I tried ...
- reverse和reverse_copy函数的应用
reverse函数的作用是:反转一个容器内元素的顺序.函数参数:reverse(first,last);//first为容器的首迭代器,last为容器的末迭代器.它没有任何返回值. 这个函数比较简单, ...
- 安装scrapy 出错 building 'twisted.test.raiser' extension error: Microsoft Visual C++ 14.0 is required.
安装Scrapy出现错误: building 'twisted.test.raiser' extension error: Microsoft Visual C++ 14.0 is required. ...