题目传送门

 1 /*
 2     题意:n位数字,任意连续的三位数字组成的数字是素数,这样的n位数有多少个
 3     最优子结构:考虑3位数的数字,可以枚举出来,第4位是和第3位,第2位组成的数字判断是否是素数
 4                 所以,dp[i][j][k] 表示i位数字,最高位数字j,第二高位数字k
 5                 状态转移方程:dp[i][j][k] += dp[i-1][k][l]
 6                 注意:最高位从1开始枚举:)
 7     详细解释:http://blog.csdn.net/zhangyanxing666/article/details/9628563
 8 */
 9 #include <cstdio>
10 #include <iostream>
11 #include <algorithm>
12 #include <cstring>
13 #include <cmath>
14 using namespace std;
15
16 const int MAXN = 1e4 + 10;
17 const int INF = 0x3f3f3f3f;
18 const int MOD = 1e9 + 9;
19 int prime[11][11][11];
20 int vis[1010];
21 int dp[MAXN][11][11];
22
23 void solve(void)
24 {
25     memset (prime, 0, sizeof (prime));
26     memset (vis, 0, sizeof (vis));
27     memset (dp, 0, sizeof (dp));
28     for (int i=2; i<=1000; ++i)
29     {
30         if (!vis[i])
31         {
32             vis[i] = true;
33             for (int j=i*2; j<=1000; j+=i)
34             {
35                 vis[j] = true;
36             }
37             prime[i/100][i/10%10][i%10] = 1;
38         }
39     }
40
41     for (int i=1; i<=9; ++i)
42     {
43         for (int j=0; j<=9; ++j)
44         {
45             for (int k=0; k<=9; ++k)    if (prime[i][j][k])    dp[3][i][j]++;
46         }
47     }
48
49     for (int i=4; i<=10000; ++i)
50     {
51         for (int j=1; j<=9; ++j)
52         {
53             for (int k=0; k<=9; ++k)
54             {
55                 for (int l=0; l<=9; ++l)
56                     if (prime[j][k][l])    dp[i][j][k] = (dp[i][j][k] + dp[i-1][k][l]) % MOD;
57             }
58         }
59     }
60 }
61
62 int main(void)        //URAL 1586 Threeprime Numbers
63 {
64     //freopen ("M.in", "r", stdin);
65
66     solve ();
67     int n;
68     while (scanf ("%d", &n) == 1)
69     {
70         int ans = 0;
71         for (int i=1; i<=9; ++i)
72         {
73             for (int j=0; j<=9; ++j)
74                 ans = (ans + dp[n][i][j]) % MOD;
75         }
76
77         printf ("%d\n", ans);
78     }
79
80     return 0;
81 }

转载于:https://www.cnblogs.com/Running-Time/p/4490516.html

递推DP URAL 1586 Threeprime Numbers相关推荐

  1. 递推DP URAL 1119 Metro

    题目传送门 1 /* 2 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 3 递推DP:仿照JayYe,处理的很巧妙, ...

  2. 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)

    整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...

  3. 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)

    这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...

  4. hdu1978(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始: 外循环扫描所有点dp[x] ...

  5. 递推DP HDOJ 5459 Jesus Is Here

    题目传送门 题意:简单来说就是sn = sn-1 + sn-2递推而来,求其中所有c字符的:∑i<j:sn[i..i+2]=sn[j..j+2]=''cff"(j−i) mod 530 ...

  6. 递推DP UVA 1366 Martian Mining

    题目传送门 1 /* 2 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 3 到达边界后把沿途路上的权值相加求和使最大 4 DP:这是道递推题, ...

  7. POJ 1661 Help Jimmy(递推DP)

    思路: 1. 每个板子有左右两端, dp[i][0], dp[i][1] 分别记录左右端到地面的时间 2. 从下到上递推计算, 上一层的板子必然会落到下面的某一层板子上, 或者地面上 总结: 1. 计 ...

  8. HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )

    题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...

  9. [DFS/递推/DP] 2327 [SCOI2005] 扫雷 ( 普及+/提高

    Date:2019/10/13 Degree of difficulty:Universal Original question:P2327 [SCOI2005]扫雷 原题与改编 10.13月考[爆零 ...

最新文章

  1. 分解原理_基于矩阵分解原理的推荐系统
  2. 新版本找不到tf.contrib的解决方案
  3. 前端学习(1734):前端系列javascript之添加动画
  4. C#进阶之WebAPI(二)
  5. 深入浅出MongoDB(二)概述
  6. vue2 工具类_h5缓存
  7. Linux下安装JDK说明
  8. java使用httpClient解决外部url请求访问
  9. 2021最新 上海互联网公司排名
  10. 30岁以后搞Android已经没有前途?复习指南
  11. 微信支付的时候提示:当前交易异常,暂无法完成支付,请注意合法使用账户,否则将升级限制措施!
  12. sonique的插件Dee2
  13. 按键精灵sub子程序篇
  14. 图像对齐:Parametric Image Alignment Using Enhanced Correlation Coefficient Maximization
  15. 基于php的乐山旅游攻略网站
  16. oracle的product删除不了,Linux下删除Oracle实例
  17. 建议Amazon卖家选择轻巧产品的原因
  18. 12306订票助手.NET
  19. seo与外链绝密技巧珍藏版分享
  20. 【ANSYS Workbench】ACT配合Workbench真能替代Mechanical APDL经典命令操作吗?

热门文章

  1. C# asp.net 图片微略图及图片裁剪处理
  2. 8 mv命令_Linux常用操作命令——文件和目录操作
  3. python之celery使用详解一
  4. linux命令最终篇
  5. bzoj2588: Spoj 10628. Count on a tree 主席树
  6. PC端稳定性测试探索
  7. Powershell 自定义对象小技巧
  8. u盘当启动盘(多种方法)
  9. 9-12 原生安装4
  10. 安装mysql程序运行出错_如何解决mysql安装后.net程序运行出错的问题