数位DP

  1. #include <cstdio>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. const int MAX_DIGIT = ;
  6. const int MAX_K = ;
  7.  
  8. long long n;
  9. int f[MAX_DIGIT];
  10. long long memoize[MAX_DIGIT][MAX_DIGIT * ][MAX_DIGIT * ];
  11. int k;
  12.  
  13. int to_digits(long long a)
  14. {
  15. int ret = ;
  16. while (a > )
  17. {
  18. f[ret++] = a % ;
  19. a /= ;
  20. }
  21. return ret;
  22. }
  23.  
  24. long long dfs(int digit, bool less, int sum, int remainder)
  25. {
  26. if (digit < )
  27. {
  28. return sum == && remainder == ;
  29. }
  30. if (less && memoize[digit][sum][remainder] != -)
  31. {
  32. return memoize[digit][sum][remainder];
  33. }
  34. int limit = less ? : f[digit];
  35. long long ret = ;
  36. for (int i = ; i <= limit; i++)
  37. {
  38. ret += dfs(digit - , less || i < f[digit], (sum + i) % k, (remainder * + i) % k);
  39. }
  40. if (less)
  41. {
  42. memoize[digit][sum][remainder] = ret;
  43. }
  44. return ret;
  45. }
  46.  
  47. long long work(long long n)
  48. {
  49. if (n < )
  50. {
  51. return ;
  52. }
  53. if (n == )
  54. {
  55. return ;
  56. }
  57. int len = to_digits(n);
  58. if (k >= MAX_DIGIT * )
  59. {
  60. return ;
  61. }
  62. return dfs(len - , false, , );
  63. }
  64.  
  65. int main()
  66. {
  67. int t;
  68. scanf("%d", &t);
  69. for (int i = ; i <= t; i++)
  70. {
  71. int a, b;
  72. scanf("%d%d%d", &a, &b, &k);
  73. memset(memoize, -, sizeof(memoize));
  74. printf("Case %d: %lld\n", i, work(b) - work(a - ));
  75. }
  76. return ;
  77. }

Light OJ 1068的更多相关文章

  1. light oj 1068 - Investigation 数位DP

    思路:典型的数位DP!!! dp[i][j][k]:第i位,对mod取余为j,数字和对mod取余为k. 注意:由于32位数字和小于95,所以当k>=95时,结果肯定为0. 这样数组就可以开小点, ...

  2. light oj 1068 数位dp

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...

  3. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

  4. Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖

    题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...

  5. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  6. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  7. light oj 1007 Mathematically Hard (欧拉函数)

    题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...

  8. Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖

    题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...

  9. Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩

    题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...

随机推荐

  1. p命名空间的使用(不推荐用)

    xmlns:p="http://www.springframework.org/schema/p" p:没有xsd文件,直接加上面那句就好了 <!-- singleton和p ...

  2. Loader Generator---loading图片生成器

    if(公司配有专业的设计师) return; Recommend("http://loadergenerator.com/");

  3. 真正理解linux的inode?

    linux 在整个架构上可以看作是三层: 1.底层代码, (引导层strip) 跟硬件沟通的那一层的代码(可能是汇编+c), 驱动底层的; strain: n./v. 拉紧, 张力, 气质, 风格, ...

  4. 说说移动前端中 viewport (视口)

    转载网络资源的文章:来源不详~~ 移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dip ( device-independent pixel 设 ...

  5. nyoj 15 括号匹配(二)动态规划

    当时看到(二)就把(一)做了, 一很容易,这道题纠结了好几天,直到今晚才看懂别人的代码谢,勉强才写出来.................... 不愧是难度6的题. #include <stdio ...

  6. HDOJ 4497 GCD and LCM

    组合数学 GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  7. 微信公众平台中添加qq在线聊天代码

    微信公众平台是个不错的媒体,可以和你的小伙伴们即时交流,但你的小伙伴们是用手机上的微信,打字自然就慢了:有人说用微信网页版,那个也不习惯,再说也不一定所有人都知道网页版微信.(2014.01.22更新 ...

  8. Spark之Streaming

    1. socket消息发送 import java.net.ServerSocket import java.io.PrintWriter import scala.collection.mutabl ...

  9. Linux 开机启动方式设置 inittab 详解,开机直接进入“命令行”模式

    Linux下的 /etc/inittab 中的英文解释: This file describes how the INIT process should set up  the system in a ...

  10. EL表达式和JSTL

    EL相关概念JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程语言,甚至不是脚本 ...