题目链接:http://hihocoder.com/problemset/problem/1560

有了数位dp的思维基础,这个递推式很容易想到:

构造转移矩阵的时候思考数位dp的转移。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 typedef long long LL;
 5 const LL mod = 1e9+7;
 6 const int maxn = 11;
 7
 8 typedef struct Matrix {
 9     LL m[maxn][maxn];
10     int r, c;
11     Matrix(){
12         r = c = 0;
13         memset(m, 0, sizeof(m));
14     }
15 } Matrix;
16 Matrix mul(Matrix m1, Matrix m2, LL mod) {
17     Matrix ans = Matrix();
18     ans.r = m1.r; ans.c = m2.c;
19     for(int i = 0; i < m1.r; i++) {
20         for(int j = 0; j < m2.r; j++) {
21             for(int k = 0; k < m2.c; k++) {
22                 if(m2.m[j][k] == 0) continue;
23                 ans.m[i][k] = (ans.m[i][k] + (m1.m[i][j] * m2.m[j][k]) % mod) % mod;
24             }
25         }
26     }
27     return ans;
28 }
29 Matrix quickmul(Matrix m, LL n, LL mod) {
30     Matrix ans = Matrix();
31     for(int i = 0; i < m.r; i++) ans.m[i][i] = 1;
32     ans.r = m.r;
33     ans.c = m.c;
34     while(n) {
35         if(n & 1) ans = mul(m, ans, mod);
36         m = mul(m, m, mod);
37         n >>= 1;
38     }
39     return ans;
40 }
41
42 LL n;
43 int k;
44
45 signed main() {
46     // freopen("in", "r", stdin);
47     while(~scanf("%lld%d",&n,&k)) {
48         Matrix p; p.r = p.c = 10;
49         for(int i = 0; i <= min(k, 9); i++) {
50             for(int j = 0; j <= min(k, 9); j++) {
51                 if(i * j <= k) p.m[i][j] = 1;
52             }
53         }
54         p = quickmul(p, n-1LL, mod);
55         LL ret = 0;
56         for(int i = 0; i <= min(k, 9); i++) {
57             for(int j = 1; j <= min(k, 9); j++) {
58                 ret += p.m[i][j];
59                 ret %= mod;
60             }
61         }
62         printf("%lld\n", ret);
63     }
64     return 0;
65 }

转载于:https://www.cnblogs.com/kirai/p/7404160.html

[HIHO1560] H国的身份证号码II(dp,计数,矩阵快速幂)相关推荐

  1. #1560 : H国的身份证号码II(dp+矩阵快速幂)

    #1560 : H国的身份证号码II 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整 ...

  2. H国的身份证号码(搜索)

    个人心得:巧妙利用数字进行维护就好了,深搜还是有点心得的: #1558 : H国的身份证号码I 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位 ...

  3. Hiho303周 H国的身份证号码I

    H国的身份证号码I 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号 ...

  4. hihoCoder #1558 : H国的身份证号码I

    题目: 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K. 例如对于K ...

  5. [CSP-S模拟测试]:涂色游戏(DP+组合数+矩阵快速幂)

    题目描述 小$A$和小$B$在做游戏. 他们找到了一个$n$行$m$列呈网格状的画板.小$A$拿出了$p$支不同颜色的画笔,开始在上面涂色.看到小$A$涂好的画板,小$B$觉得颜色太单调了,于是把画板 ...

  6. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)

    题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...

  7. bzoj 1009: [HNOI2008]GT考试(dp+kmp+矩阵快速幂)

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3932  Solved: 2398 [Submit][Sta ...

  8. 【LOJ #6617】「THUPC 2019」摆家具 / furniture(DP / BSGS / 矩阵快速幂)

    传送门 首先显然k=lognk=lognk=logn 显然对于每个iii我们只用关注有多少位与询问的数字不同 考虑分成两个部分 先对每个数字iii求出与他有jjj位不同的数字价值之和 再求出ttt轮后 ...

  9. Hihocoder-H国的身份证号码I

    题目名称:H国的身份证号码I 题目链接:H国的身份证号码I 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整数是合法的身份证号码当且仅当每位数字都小于等于K, ...

最新文章

  1. java中日期怎么比较_如何比较Java中的日期?
  2. Zabbix的邮件报警配置
  3. OpenCV iOS-视频处理
  4. C# 得到本机局域网IP地址
  5. LeetCode 694. 不同岛屿的数量(BFS/DFS+set)
  6. 非对称加密算法之RSA算法实现
  7. 楼梯计算机公式,各种楼梯面积的计算公式汇总
  8. 如何处理word中字体和公式不在同一水平线上
  9. 若某计算机字长为16位,题目来源于王道论坛 某计算机字长为16位,主存地址空间...
  10. 通过js滚轮滚动时调用动画_WOW.js在页面滚动时展现动感的元素动画效果
  11. C++ STL list的成员函数splice的使用
  12. OpenCV 累加一个三通道矩阵的所有元素
  13. 23.卷1(套接字联网API)---高级SCTP套接字编程
  14. 网络蜘蛛Spider的逻辑Logic(一)
  15. 一键GHOST v2019.08.12优盘教程
  16. AdventureWorks安装问题总结 exe安装
  17. matlab:圆形的图像识别(二)
  18. 前端使用xlsx-js-style导出Excel文件并修饰单元格样式
  19. c语言校友通讯录毕业论文,校友录毕业论文(C_+sql2005).doc
  20. subprocess.run方法

热门文章

  1. 计算机管理单元受到策略限制怎么解决,系统之家win7系统组策略管理单元受到策略限制的解决方法...
  2. 转场动画-仿AppStore跳转及抖音评论
  3. 候捷的JAVA英文单词翻译对照表!
  4. 文亡用计算机,手机计算器阵亡 10%+10%=0.11?
  5. C/C++Linux服务器开发完整学习路线(含免费学习资料下载地址)
  6. 手机怎么去掉视频水印,伪原创视频 怎么去视频logo批量处理去重消重去水印去logo软件...
  7. 阿里云查看mysql数据库密码是多少_阿里云服务器查看数据库密码是多少
  8. win10/win11安装qt4.8
  9. 千人互动,18 位业界大咖,2022 开放原子全球开源峰会龙蜥专区总结来了
  10. 【题解】【AcWing】1609. 前序和后序遍历