日常水一篇(滑稽)


题目描述

如果一个数的所有连续三位数字都是大于100的素数,则该数称为三素数数。比如113797是一个6位的三素数数。

输入输出格式

输入格式:
一个整数n(3 ≤ n ≤ 10000),表示三素数数的位数。

输出格式:
一个整数,表示n位三素数的个数m,要求输出m除以10^9 + 9的余数。

输入输出样例

输入样例#1:
4
输出样例#1:
204


题解

这题明显dp。
预处理素数表,这样可以O(1)判断素数。
然后就是dp数组,一开始是这样的:f[10001];
发现不够,改成这样:f[10001][10][10][10];
发现有点多,不好写,又改少点:f[10001][10][10]
这就是最终的dp数组,f[i][j][k]代表第i位,素数第二位是j,素数第三位是k的方案数。
之后就是初始化,利用素数表初始化出f[3][a][b]的所有值。
然后一直递推就好了,不断枚举a,b,c,dp方程就是f[i][b][c]+=f[i-1][a][b](a*100+b*10+c是素数)。
记得取模就好了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#define ll long long
using namespace std;
const int p=1000000009;
int prime[1000];
int vis[1000];
int n,cnt;
void init(){for(int i=2;i<1000;i++){if(!vis[i]){prime[++cnt]=i;}for(int j=1;j<=cnt&&i*prime[j]<1000;j++){vis[i*prime[j]]=1;if(i%prime[j]==0){break;}}}
}
int f[10001][10][10];
void dp(){for(int a=1;a<=9;a++){for(int b=1;b<=9;b++){for(int c=1;c<=9;c++){if(!vis[a*100+b*10+c]){f[3][b][c]++;}}}}for(int i=4;i<=n;i++){for(int a=1;a<=9;a++){for(int b=1;b<=9;b++){for(int c=1;c<=9;c++){if(!vis[a*100+b*10+c]){f[i][b][c]=(f[i][b][c]+f[i-1][a][b])%p;}}}}}
}
int main(){scanf("%d",&n);init();dp();int ans=0;for(int b=1;b<=9;b++){for(int c=1;c<=9;c++){ans=(ans+f[n][b][c])%p;}}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/stone41123/p/7581278.html

洛谷 P2359 三素数数相关推荐

  1. (差分)洛谷P4231 三步必杀

    洛谷P4231 三步必杀 三步必杀 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的 ...

  2. 洛谷P2657 [SCOI2009]windy数

    洛谷P2657 [SCOI2009]windy数 本题是一道数位DP 看程序应该能看懂 中心思想:把一个数拆成每一位来处理 代码: #include<bits/stdc++.h> usin ...

  3. 洛谷 P1254 扇区填数

    洛谷 P1254 扇区填数 题目描述 有一个圆,当输入一个整数n(1≤n≤8)后,它被分成n个扇区,请你为每一扇区选择一个自然数(大于0的整数). 向各个扇区放入数之后,你可以从单个扇区中选出-个数, ...

  4. (快速幂算法+高精度)洛谷P1045 麦森数

    前言   故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...

  5. 洛谷刷题——P1255 数楼梯

    题目:来源于洛谷 楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入格式 一个数字,楼梯数. 输出格式 输出走的方式总数. 输入输出样例 输入 #1 ...

  6. 网络流建模方法(四)—— 互不攻击问题 洛谷 P3353 骑士共存问题 (附 洛谷 P2774 方格取数问题)

    网络流建模方法(四)互不攻击问题,或者说是共存问题, 这类题目看起来有点像二分图匹配,这类题目我们就是建一个二分图然后跑最大流 还是先说题目洛谷P3353 题目描述 在一个 nn个方格的国际象棋棋盘上 ...

  7. #数位dp#洛谷 4317 花神的数论题

    感谢dalao@小粉兔的帮助 dalao's 博客园,dalao's 洛谷博客 题目 设f[i]f[i]f[i]表示iii转化为二进制后1的个数,求∏i=1nf[i]\prod_{i=1}^nf[i] ...

  8. 洛谷 P1004 方格取数 【多线程DP/四维DP/】

    题目描述(https://www.luogu.org/problemnew/show/1004) 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0. ...

  9. 洛谷 P1004 方格取数 WD

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A0 0 0 0 0 0 0 00 0 13 0 0 6 0 0 ...

最新文章

  1. 算法代码中的循环矩阵在哪体现_循环移位可视化理解
  2. 如何获取文件的完整路径?
  3. tesseract识别图片中文字(一)
  4. QPS、TPS、RT、并发量、 吞吐量
  5. Leecode31. 下一个排列——Leecode大厂热题100道系列
  6. 【剑指offer】——【python中return函数中的and和or表达式的返回值】
  7. .NET Core开发日志——Linux版本的SQL Server
  8. react 最佳入门_miaov-React 最佳入门
  9. TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)
  10. Spring : SpringBootConfiguration 注解
  11. java环境安装说明
  12. spring 动态代理_Spring中的两种动态代理
  13. csr867x入门之环境搭建(一)
  14. 消消乐游戏算法实现(三消乐)
  15. Google Play Academy 组队 PK 赛,正式开赛!
  16. Keyphrase Chunking - bert2chunk_dataloader.py分析
  17. 传奇单机版批量修改爆率. 把所有物品爆率都改成1/10, 需要的话可以自己改更高....
  18. 前端练手项目 HTML 游戏叠高塔(包含源码)
  19. C语言union总结
  20. Mixed Reality Martial Arts Training using Real-time 3D Human Pose Forecasting with a RGB Camera(翻译二)

热门文章

  1. session、flask session知识的相关收集
  2. 【BZOJ】3456: 城市规划 动态规划+多项式求逆
  3. static用法解析---java语言
  4. BZOJ-1878: [SDOI2009]HH的项链(莫队算法)
  5. [TFRecord文件格式]基本介绍
  6. Python3 定时访问网页
  7. 从命令行及java程序运行MyBatis Generator 1.3.x生成MyBatis3.x代码
  8. WebX5 button tabs的bind-text属性设置
  9. Huffman 编码压缩算法
  10. android多种方式实现异步加载图片