当前位置: 首页 > news >正文

洛谷 P2359 三素数数 题解

题目链接

洛谷 P2359 三素数数 题解

思路分析

首先,由于三素数数每相邻三位都是质数,所以我们猜测应该先预处理出所有三位的质数。然后,我们发现,要保证每相邻三位都是质数,那么一个 \(n\) 位三素数数可以看作在保证前面 \(n-1\) 位都是三素数数的基础上,在后面加上一个一位数使最后三位也是质数。所以,我们定义 \(dp_{i,j}\) 表示 \(i\) 位,末两位是 \(j\) 的三素数数的个数,然后寻找其与 \(i-1\) 位的三素数数个数的关系即可。

按前文所说,我们先预处理出所有三位数的素数,按末两位存进 \(100\)vector 中,然后对于 \(dp_{i,j}\),遍历所有末两位为 \(j\) 的素数 \(k\),则 \(dp_{i,j}=\sum dp_{i-1,k/10}\),其中 / 号为整除。

代码如下,时间复杂度为 \(O(n\sqrt{n}+nm)\),其中 \(m\) 为三位素数个数,瓶颈在预处理素数,可以用素数筛法优化。

代码呈现

#include<bits/stdc++.h>
using namespace std;const int N=1e4+10,mod=1e9+9;
int n;
int dp[N][100];
vector<int> primes[100];bool isPrime(int x){ // 判断素数if (x<2) return 0;for (int i=2;i*i<=x;++i){if (x%i==0) return 0;}return 1;
}
int main(){scanf("%d",&n);for (int i=100;i<=999;++i){ // 预处理素数if (isPrime(i)) primes[i%100].push_back(i),++dp[3][i%100];}for (int i=4;i<=n;++i){for (int j=0;j<=99;++j){for (auto k:primes[j]) dp[i][j]=(dp[i][j]+dp[i-1][k/10])%mod; // mod!!!}}int ans=0;for (int i=0;i<=99;++i) ans=(ans+dp[n][i])%mod; // 还要 mod!!!printf("%d",ans);return 0;
}
http://www.jsqmd.com/news/703057/

相关文章:

  • 2026年常熟板材公司最新推荐榜:BLUM板材/CLEAF板材/百隆板材/奥地利爱格板材/意大利可丽芙板材 - 品牌策略师
  • 2026年天津口碑好的财税记账公司推荐,安立财税实力信誉全解析 - 工业设备
  • 免费开源桌面分区神器:NoFences如何用C代码重构你的Windows桌面体验
  • Unity相机跟随别再只写Update了!LateUpdate与Lerp函数实战详解(附平滑移动优化技巧)
  • Baresip SIP通信核心:模块化架构、实战配置与性能调优指南
  • 如何用Bulk Crap Uninstaller彻底清理Windows系统:批量卸载工具终极指南
  • 终极Windows风扇控制指南:免费开源软件FanControl完全配置教程
  • 从递归到循环:在LeetCode刷题中,我到底该用哪种?附Python/Java代码对比
  • 2026年实测免费降AI率工具:5个工具哪个真有效?一键解忧附血泪避坑指南 - 降AI实验室
  • 如何高效完成OFD转PDF:开源工具Ofd2Pdf使用详解
  • SuperCoder:开源多智能体自主软件开发系统架构与实战
  • 软件前端控制器管理化的请求集中处理
  • 前端开发者自救指南:遇到用户反馈504错误,除了让用户刷新还能做什么?
  • 【架构实战】微前端架构设计与落地
  • FlinkSQL实战:用Kafka Connector处理JSON/CSV/Raw格式数据的完整避坑指南
  • 2026年南海加固公司公司推荐top榜单:清远加固公司/番禺加固公司/南沙注浆加固公司/番禺注浆加固公司/顺德注浆加固公司 - 品牌策略师
  • 抖音下载神器:douyin-downloader让视频保存变得如此简单!
  • 从‘网络错误’到精准提示:给你的AJAX错误回调函数加点‘料’(附jQuery/Axios/Fetch示例)
  • UG NX二次开发实战:当Block UI的SelectObject控件‘闹脾气’时,我是如何通过过滤器与回调机制巧妙化解的
  • 实测Stable Diffusion v1.5:这些惊艳的AI绘画作品,你也可以轻松复现
  • 保姆级图解:Android分屏时,SystemServer如何用WindowContainerTransaction处理Task的“搬家”与“装修”
  • AI智能体桌面宠物:从概念到实践的开发指南
  • 终极Windows 11优化指南:免费开源工具Win11Debloat完整教程
  • IMU标定参数详解:零偏、标度因数、安装误差到底在标什么?
  • AD9361数据通道带宽瓶颈全解析:从PC到芯片,你的SDR系统到底卡在哪一环?
  • MCP 2026编排安全红线清单(含CNCF审计认证未覆盖的4个侧信道风险点),2025年1月起强制生效!
  • PyAEDT终极指南:如何用Python自动化你的Ansys仿真工作流,提升10倍效率
  • 2025 dotnet performance optimization discussion group
  • 3分钟部署IPXWrapper:让经典游戏在现代Windows上重获联机能力
  • MCP 2026低代码集成失败率高达67%?深度复盘3家头部企业的5次回滚根因