洛谷P2359 三素数数【DP】【绿】

博客介绍了如何解决洛谷P2359问题,该问题要求找到所有连续三位数字都是大于100的素数的数,即三素数数。内容包括输入输出格式、样例以及使用动态规划的解决方案,重点讨论了状态转移方程和初始状态设定。
摘要由CSDN通过智能技术生成

Date:2022.03.27
题目描述
如果一个数的所有连续三位数字都是大于100的素数,则该数称为三素数数。比如113797是一个6位的三素数数。
输入格式
一个整数n(3 ≤ n ≤ 10000),表示三素数数的位数。
输出格式
一个整数,表示n位三素数的个数m,要求输出m除以10^9 + 9的余数。
输入输出样例
输入 #1复制
4
输出 #1复制
204

思路:开始讨论了最后加上1、2、3位数,发现只需要讨论最后1位数即可非常方便实现状态转移。并且不论结尾加几位数都与加1位数重叠。
由此,状态转移方程: f [ i ] [ j ] [ k ] : 共 i 位 的 数 , 末 尾 两 位 分 别 为 j 、 k 的 三 素 数 数 的 个 数 。 f[i][j][k]:共i位的数,末尾两位分别为j、k的三素数数的个数。 f[i][j][k]:ijk
状态转移: f [ i ] [ j ] [ k ] = f [ i + 1 ] [ k ] [ u ] + f [ i ] [ j ] [ k ] ; 【 前 提 保 证 j ∗ 100 + k ∗ 10 + u 是 素 数 & & 要 > 100 】 f[i][j][k]=f[i+1][k][u]+f[i][j][k];【前提保证j*100+k*10+u是素数\&\&要>100】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值