BZOJ1853 [Scoi2010]幸运数字 [容斥原理]【组合数学】
来源:互联网 发布:萨德问题 知乎 编辑:程序博客网 时间:2024/05/17 08:55
题目连接:https://vjudge.net/problem/HYSBZ-1853
————————————————————————————————————.
1853: [Scoi2010]幸运数字
Time Limit: 2 Sec Memory Limit: 64 MB
Submit: 2284 Solved: 834
[Submit][Status][Discuss]
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
————————————————————————————————————.
首处理出所有的幸运数字,
只有
然后找到这些数中的”幸运素数”(就是这些数组成的序列中不能被其他元素整除的数(类似线性基?!))
找到这些数,那么 其实就把这个问题就是成求[a,b]内那些”幸运素数”的倍数有多少个就好了.
答案就是
很明显的一个容斥原理,
上述问题很容易 不再赘述
附本题代码
————————————————————————————————————.
LL l,r,a[10000],cnt,ans;vector<LL>b;void dfs1(LL x,int bit){ if(bit>10) return ; if(x) a[++cnt] = x; dfs1(x*10+6,bit+1); dfs1(x*10+8,bit+1);}void init(){ cnt=0,dfs1(0,0); //printf("%I64d\n",cnt); sort(a+1,a+cnt+1); for(int i=1;i<=cnt;i++){ for(int j=1;j<i;j++){ if(a[j]&&a[i]%a[j]==0){ a[i]=0;break; } } if(a[i])b.pb(a[i]); }}LL dfs2(int pos,bool flag ,LL val,LL &x){ if(pos<0) return 0; LL ans = 0; ans+=dfs2(pos-1,flag,val,x); LL g = _gcd(val,b[pos]); if(val/g <= x/b[pos]){ g = val/g*b[pos]; if(flag) ans += x/g; else ans -= x/g; ans+=dfs2(pos-1,!flag,g,x); } return ans;}LL calc(LL x){ ans = 0; int id = 0,sz=b.size(); while(id<sz && b[id]<=x) id++; return dfs2(id-1,true,1ll,x);}void work(){ cin>>l>>r; cout<<calc(r)-calc(l-1)<<endl;}int main(){ init(); work(); return 0;}
- BZOJ1853 [Scoi2010]幸运数字 [容斥原理]【组合数学】
- 【bzoj1853】 SCOI2010幸运数字 容斥原理
- BZOJ1853 [Scoi2010]幸运数字 容斥原理
- [BZOJ1853][SCOI2010][容斥原理]幸运数字
- bzoj1853[Scoi2010]幸运数字 容斥原理
- 组合数学专题:【BZOJ1853】【SCOI2010】幸运数字
- bzoj1853: [Scoi2010]幸运数字 dp+容斥原理
- [BZOJ1853][Scoi2010]幸运数字(容斥原理)
- bzoj1853: [Scoi2010]幸运数字(容斥原理)
- [BZOJ1853][SCOI2010]幸运数字(DFS+容斥)
- bzoj1853 幸运数字 容斥原理&dfs
- 【SCOI2010】【BZOJ1853】幸运数字
- bzoj1853【SCOI2010】幸运数字
- 【bzoj1853】【scoi2010】幸运数字
- bzoj1853: [Scoi2010]幸运数字
- bzoj1853: [Scoi2010]幸运数字
- 【bzoj1853】[Scoi2010]幸运数字
- ☆【容斥原理】【SCOI2010】幸运数字
- 谈谈Android的so
- 数据结构实验之栈四:括号匹配
- 算法训练 Torry的困惑(基本型)
- React Native开源项目-贷贷助手客户端
- 二叉搜索树与双向链表
- BZOJ1853 [Scoi2010]幸运数字 [容斥原理]【组合数学】
- 【Python】学习笔记——-5.1、高阶函数
- C++符号优先级
- Linux 多线程 ”一写多读” 模式下的无锁设计
- Matlab数据的可视化 -- 饼图
- Check failed: error == cudaSuccess (8 vs. 0) invalid device function
- android拦截电话(AIDL+广播)
- windows安装Apache,注册服务出现“(OS 5)拒绝访问。 : AH00369: Failed to open the WinNT service manager..."错误
- eclipse创建web项目,让web项目自动更新到Tomcat下的webapps目录