【题意】

定义C数为只包含数字2和9的数,求[L,R]内能被C数整除的个数。

【思路】

Dfs预处理出C数,并去除其中倍数的情况。

Dfs搜索出现情况,奇数加,偶数减,当数值大于R时剪枝。

【代码】

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. typedef long long ll;
  7. const int N = 2e3+;
  8.  
  9. ll a[N],b[N],vis[N],ans,tot,n,L,R;
  10.  
  11. void get_pre(int num)
  12. {
  13. if(num>R) return ;
  14. if(num) a[++tot]=num;
  15. get_pre(num*+);
  16. get_pre(num*+);
  17. }
  18. ll gcd(ll a,ll b)
  19. {
  20. return b==? a:gcd(b,a%b);
  21. }
  22. void dfs(int cur,int cnt,ll lcm)
  23. {
  24. if(cur==n+) {
  25. if(cnt&) ans+=R/lcm-(L-)/lcm;
  26. else if(cnt) ans-=R/lcm-(L-)/lcm;
  27. return ;
  28. }
  29. dfs(cur+,cnt,lcm);
  30. ll val=lcm*a[cur]/(gcd(lcm,a[cur]));
  31. if(val<=R) dfs(cur+,cnt+,val);
  32. }
  33.  
  34. int main()
  35. {
  36. scanf("%lld%lld",&L,&R);
  37. get_pre();
  38. sort(a+,a+tot+);
  39. for(int i=;i<=tot;i++)
  40. if(!vis[i]) {
  41. b[++n]=a[i];
  42. for(int j=i+;j<=tot;j++)
  43. if(a[j]%a[i]==) vis[j]=;
  44. }
  45. for(int i=;i<=n;i++)
  46. a[i]=b[n-i+];
  47. dfs(,,);
  48. printf("%lld\n",ans);
  49. return ;
  50. }

bzoj 2393 Cirno的完美算数教室(容斥原理+搜索)的更多相关文章

  1. Bzoj 2393: Cirno的完美算数教室 容斥原理,深搜

    2393: Cirno的完美算数教室 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 287  Solved: 175[Submit][Status][ ...

  2. [bzoj 2393] Cirno的完美算数教室 (容斥原理+dfs剪枝)

    题目描述 CirnoCirnoCirno发现了一种bakabakabaka数,这种数呢只含有222和999两种数字 现在CirnoCirnoCirno想知道[L,R][L,R][L,R]中有多少个数能 ...

  3. ●BZOJ 2393 Cirno的完美算数教室

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2393 题解: 容斥原理,暴力搜索,剪枝...和 [Scoi2010 幸运数字] 一样的(只是 ...

  4. BZOJ 2393 Cirno的完美算数教室

    就是爆搜嘛. 先从大到小排个序能减去dfs树上很大的一部分.这个技巧要掌握. #include<iostream> #include<cstdio> #include<c ...

  5. 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1817  Solved: 665[Submit][Status] ...

  6. bzoj 1853: [Scoi2010]幸运数字&&2393: Cirno的完美算数教室【容斥原理】

    翻了一些blog,只有我用状压预处理嘛2333,.把二进制位的0当成6,1当成8就行啦.(2393是2和9 然后\( dfs \)容斥,加上一个数的\( lcm \),减去两个数的\( lcm \), ...

  7. BZOJ2393: Cirno的完美算数教室

    2393: Cirno的完美算数教室 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 138  Solved: 83[Submit][Status] D ...

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

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

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

    传送门 先通过dfs预处理出来所有只有2和9的数,也就大概2000多个. 想在[L,R]中找到是这些数的倍数的数,可以通过容斥原理 那么如果a % b == 0,那么便可以把 a 去掉,因为 b 的倍 ...

随机推荐

  1. ScannerTest-------double string

    import java.util.*; public class ScannerTest { public static void main(String[] args){ Scanner scann ...

  2. 被称为同步神器的 BTSync,你可以怎么用?

    在这高速运作的信息化时代,使用云端来衔接工作和生活的点滴已是寻常事.可你是否曾扪心自问过:用各大云端备份自己的信息资料,真的安全放心吗? 毫不夸张的说,其实恶意代码和漏洞早已和你如影随形.你甚至都不用 ...

  3. iOS xcuserdata

    说明:       project.xcworkspace说明:is a directory of files describing the workspace or projects. Althou ...

  4. eclipse 中忽略jsp, xml文件中的报错信息

    有的时候, 在eclipse中, jsp, xml 文件时运行的好好的, 可是就是在eclipse中报错, 虽然不影响功能, 但看起来很烦, 去掉这些错误警告的方法是: Windows-Prefere ...

  5. 未能加载文件或程序集“Interop.jmail”或它的某一个依赖项

    未能加载文件或程序集“Interop.jmail”或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中 ...

  6. ubuntu服务器/home/分区替换3T硬盘

    一,关机,将硬盘连接到主机. 二,开机 1,查看/dev/ 是否有多余的sdb 注,sda,sdb可以直接看做一整块硬盘. 而sda1,sda2即sda硬盘上的分区. 2,执行fdisk –l,确保添 ...

  7. 高性能Web框架Zend Framework

    Zend Framework (ZF)是用 PHP 5.3及更高版本来开发 Web 程序和服务的开源框架.ZF用100% 面向对象编码实现. ZF的组件结构独一无二,每个组件几乎不依靠其他组件.这样的 ...

  8. <<c 和指针 >> 部分笔记。

    最近竟然对指针有些迷惑了,分不清指针的指向.废话少说,复习.(下面内容来自<<c和指针>>) =指针 ==内存和地址 尽管一个字包含了4个字节,它仍然只有一个地址.至于是最左边 ...

  9. android4.4.2内核移植3.4.1

    01◑ 内核源码总目录下Makefile文件修改: 195行: ARCH ?= $(SUBARCH)替换成: ARCH ?= arm 02◑ arch/arm下makefile: ①差7行 # tes ...

  10. showdialog()与show的区别

    showdialog就是显示有模式的窗体,showdialog后面的语句不会执行,直到显示的窗体被关闭. show就是无模式的窗体,显示窗体后不论窗体是否关闭都执行show后面的语句. ------- ...