bzoj 2393(容斥原理)

原创 2016年08月30日 19:28:17

2393: Cirno的完美算数教室

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 394  Solved: 231
[Submit][Status][Discuss]

Description

~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~
现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~
但是Cirno这么天才的妖精才不屑去数啦
只能依靠聪明的你咯。
 
 

Input

一行正整数L R
( 1 < L < R < 10^10)
 

Output

一个正整数,代表所求的答案
 

Sample Input

1 100

Sample Output

58


解题思路:先可以枚举出baka数,然后再删掉两两可以整除的。

然后在dfs,加点剪枝,就是当lcm>r时直接退出。


#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
long long l,r,len,cnt,ans;
long long q[2000],g[2000];
bool b[2000];


inline long long read()
{
char y; long long x=0,f=1; y=getchar();
while (y<'0' || y>'9') {if (y=='-') f=-1; y=getchar();}
while (y>='0' && y<='9') {x=x*10+int(y)-48; y=getchar();}
return x*f;



long long gcd(long long a,long long b)
 {
  if (b==0) return a;
 else return gcd(b,a%b);
 }


void dfs(long long sum)
 {
  if (sum>r) return;
if (sum!=0)++len,q[len]=sum;
  dfs(sum*10+2);
  dfs(sum*10+9);
 }


void work(long long sum,int ge,int now)
 {
  if (sum>r) return;
  if (now==cnt+1)
  {
   if (sum!=1) {if (ge%2==1)ans+=r/sum-(l-1)/sum; else ans-=r/sum-(l-1)/sum;}
   return;
}
    long long ogg=gcd(sum,g[now]);
    work(sum*g[now]/ogg,ge+1,now+1);
    work(sum,ge,now+1);
 }


int main()
{
l=read(); r=read();
dfs(0);
memset(b,true,sizeof(b));
for (int i=1;i<=len;++i)
for (int j=1;j<=len;++j)
 if (i!=j && q[i]%q[j]==0) b[i]=false;
for (int i=1;i<=len;++i)
if (b[i])
 {
  ++cnt; g[cnt]=q[i];
 }
ans=0;
work(1,0,1);
printf("%lld",ans);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

BZOJ 2669 cqoi2012 局部极小值 状压DP+容斥原理

题目大意:给定一个n∗mn*m的矩阵,标记出其中的局部极小值,要求填入1...n∗m1...n*m,求方案数《多年的心头大恨终于切掉了系列》 考虑将数字从小到大一个一个填进去 由于局部极小值最多8...
  • PoPoQQQ
  • PoPoQQQ
  • 2015年08月27日 15:46
  • 3980

BZOJ 3622 已经没有什么好害怕的了 动态规划+容斥原理

题目大意:给定两个长度为n个序列,保证这2n个数字两两不同,求有多少匹配满足a[i]>b[i]的数对数比a[i] もう何も怖くない 题解:http://www.cnblogs.com/dyll...
  • PoPoQQQ
  • PoPoQQQ
  • 2015年03月21日 10:48
  • 2601

bzoj4070【APIO2015】雅加达的摩天楼

SPFA求最短路+分块思想优化构图
  • AaronGZK
  • AaronGZK
  • 2016年04月20日 00:33
  • 2618

BZOJ1853/2393【容斥原理】

如果一个幸运数是另外的幸运数的倍数.那么做容斥的时候就不需要考虑它了. /* I will wait for you*/ #include #include #include #include...
  • Lethelody
  • Lethelody
  • 2015年04月28日 10:59
  • 283

[BZOJ2393]Cirno的完美算数教室(容斥原理+DFS)

ATP的同学们明天就要去期中考试了然而ATP并不用考嘿嘿嘿。。(丧心病狂不要face= =)...
  • FromATP
  • FromATP
  • 2016年11月11日 20:07
  • 287

bzoj2393 容斥原理

bzoj2393 容斥原理的应用
  • u012457935
  • u012457935
  • 2014年04月05日 14:09
  • 1086

BZOJ 2393 Cirno的完美算数教室 容斥原理+DFS

警告:网上的题解都是误人子弟,看此篇题解之前请将脑海中对其它写于本题解之前的网上常见题解的印象全部消除之后方可阅读 此题的数据范围是10^9 但是10^10一样可以做 不影响 首先我们可以预处理出...
  • PoPoQQQ
  • PoPoQQQ
  • 2014年12月08日 19:52
  • 1222

【bzoj2393】【Cirno的完美算数教室】容斥原理的剪枝应用

(上不了p站我要死了,侵权度娘背锅)在用容斥定理时,常常会用到dfs的形式,如果枚举完所有的情况可能会超时,其剪枝的优化很是重要。 Description ~Cirno发现了一种baka数,...
  • coco56181712
  • coco56181712
  • 2017年10月25日 20:24
  • 108

bzoj 2393 & bzoj 1853 容斥原理

我觉得我写不出更合适的题解了:http://www.2cto.com/kf/201412/359333.html var l,r,n,m :longint; ...
  • Eirlys_North
  • Eirlys_North
  • 2017年03月04日 20:54
  • 160

bzoj2393 Cirno的完美算数教室

容斥原理+搜索剪枝
  • AaronGZK
  • AaronGZK
  • 2016年05月26日 23:47
  • 2843
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bzoj 2393(容斥原理)
举报原因:
原因补充:

(最多只允许输入30个字)