博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 1586. Threeprime Numbers 数位dp
阅读量:4326 次
发布时间:2019-06-06

本文共 1125 字,大约阅读时间需要 3 分钟。

题目链接:

题解:dp[i][j][k]表示长度为i,最高位为j,次高位为k的合法方案数,转移方程为当j*100+k*10+l为质数时dp[i][j][k]+=dp[i-1][k][l];

#include
#include
#include
#include
#include
#include
#define pb push_back#define ll long long#define PI 3.14159265#define ls l,m,rt<<1#define rs m+1,r,rt<<1|1#define eps 1e-7typedef unsigned long long ull;const int mod=1e9+9;const int maxn=1e4+5;const int root=1e6+7;using namespace std;int t,cnt,n,m,k;bool prime[1000];ll dp[maxn][10][10];void init(){ for(int i=2;i<1000;i++) { if(!prime[i]) { for(int j=i*2;j<1000;j+=i) { prime[j]=true; } } } for(int i=0;i<10;i++) for(int j=0;j<10;j++) { dp[2][i][j]=1; }}int main(){ std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); init(); cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<10;++j) for(int k=0;k<10;k++) for(int l=0;l<10;l++) { if(!prime[j*100+k*10+l]) { dp[i][j][k]+=dp[i-1][k][l]; dp[i][j][k]%=mod; } } ll ans=0; for(int i=1;i<10;i++) for(int j=0;j<10;j++) { ans+=dp[n][i][j]; ans%=mod; } cout<
<

 

转载于:https://www.cnblogs.com/lhclqslove/p/8413023.html

你可能感兴趣的文章
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
Linux下Nginx安装
查看>>
LVM扩容之xfs文件系统
查看>>
Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)
查看>>
代码片段收集
查看>>
vue-cli3创建项目时报错
查看>>
输入1-53周,输出1-53周的开始时间和结束时间
查看>>
实验二
查看>>
shell——按指定列排序
查看>>
crash 收集
查看>>
507 LOJ 「LibreOJ NOI Round #1」接竹竿
查看>>
UI基础--烟花动画
查看>>
2018. 2.4 Java中集合嵌套集合的练习
查看>>
精通ASP.NET Web程序测试
查看>>
vue 根据不同属性 设置背景
查看>>
51Nod1601 完全图的最小生成树计数 Trie Prufer编码
查看>>
Codeforces 1110D. Jongmah 动态规划
查看>>
android驱动在win10系统上安装的心酸历程
查看>>
优雅的程序员
查看>>