BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】
BZOJ1853 Scoi2010 幸运数字
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
首先我们可以把所有由6和8组成的数dfs出来,数量不多一共只有两千个
然后我们发现对于i%j==0,i在这里是没有意义的,这样筛一下大概就剩1000个左右,然后我们考虑暴力容斥,对于一个数w,在晒完的数里面如果有p个约数,那么我们把答案加上,-1^P(r/w-(l-1)/w)
这个容斥我不证明,理解一下还是很简单的
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define N 10010
vector<LL> number,v;
bool vis[N];
LL l,r,ans=;
void dfs(LL tmp){
if(tmp)number.push_back(tmp);
if(tmp*+<=r)dfs(tmp*+);
if(tmp*+<=r)dfs(tmp*+);
}
LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
void Find(int tmp,LL lcm,int sign){
if(tmp==(signed)v.size()){
if(lcm>)ans+=(r/lcm-(l-)/lcm)*sign;
return;
}
Find(tmp+,lcm,sign);
double nxt=(double)v[tmp]/(double)gcd(v[tmp],lcm)*(double)lcm;
if(nxt>r)return;
Find(tmp+,nxt,-sign);
}
void solve(){
dfs();
sort(number.begin(),number.end());
int n=number.size()-;
for(int i=;i<=n;i++)if(!vis[i])
for(int j=i+;j<=n;j++)
if(number[j]%number[i]==)vis[j]=;
for(int i=;i<=n;i++)if(!vis[i])v.push_back(number[i]);
reverse(v.begin(),v.end());
}
int main(){
scanf("%lld%lld",&l,&r);
solve();
Find(,,-);
printf("%lld",ans);
return ;
}
BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】的更多相关文章
- 2019.01.17 bzoj1853: [Scoi2010]幸运数字(容斥+dfs)
传送门 搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了. 题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中 ...
- P2567 [SCOI2010]幸运数字 DFS+容斥定理
P2567 [SCOI2010]幸运数字 题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,66 ...
- [SCOI2010]幸运数字(容斥+爆搜)
在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是 ...
- [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]幸运数字
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- BZOJ1853 [Scoi2010]幸运数字 容斥原理
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1853 题意概括 求一个区间范围内,近似幸运数字的个数. 定义: 幸运数字:仅由6或者8组成的数字. ...
- bzoj1853: [Scoi2010]幸运数字 dp+容斥原理
在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是 ...
- 并不对劲的bzoj1853:[SCOI2010]幸运数字
传送门-> 据说本题的正确读法是[shìng运数字]. 听上去本题很适合暴力,于是并不对劲的人就去写了.其实这题就是一个很普(有)通(趣)暴力+神奇的优化. 首先,会发现幸运数字很少,那么就先搜 ...
随机推荐
- 秒懂算法1——冒泡排序,及一种小改进(C#实现)
算法思路: 重复走访每两个相邻元素,比较大小交换位置,直至排序完成. 有兴趣电话可以看一下这个[冒泡排序踢踏舞]的视频,很形象的演示了排序过程,额呵呵~~ 性质: 冒泡排序是一种原地排序(只有常数个元 ...
- monkey测试小记
本篇中不记录环境搭建,只是介绍一些经验和小秘诀吧. 一.使用安卓模拟器进行测试. 在刚刚接触到monkey测试的时候,用的真机进行测试,点击几万次甚至更多的时候,发现系统变慢了.也许是错觉,但是系统经 ...
- java工具类使用
ResourceBundle bundle = ResourceBundle.getBundle("res", new Locale("zh", "C ...
- 【转】Java运行时数据区简介及堆与栈的区别
理解JVM运行时的数据区是Java编程中的进阶部分.我们在开发中都遇到过一个很头疼的问题就是OutOfMemoryError(内存溢出错误),但是如果我们了解JVM的内部实现和其运行时的数据区的工作机 ...
- js计算之递归
看以下js代码: var w = [{ label: '你好', node: [ { label: '你好啊', node: [{ label: "还好", node: [] }, ...
- PHP表单(get,post)提交方式
PHP 表单处理 PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data). $_GET 是通过 URL 参数传递到当前脚本的变量数组. $_POST 是通过 HTTP ...
- python2.7安装requests
我这里的是linux CentOS7版本 直接执行命令pip install requests 安装即可,如果提示没有pip这个命令要先安装pip 安装步骤如下: 1. 首先检查Linux有没有安装P ...
- Symmetrical Network Acceleration with EBS 12
Andy Tremayne, my esteemed colleague and fellow blogger, has published a new whitepaper that discuss ...
- Shell 变量,Shell echo命令
一.Shell 变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟 ...
- 【2018 “百度之星”程序设计大赛 - 初赛(B)-1004】p1m2(迷之二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6383 题目就是让你求一个整数数组,在进行任意元素 + 1. - 2 操作后,请问在所有可能达到的稳定数 ...