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

题解:洛谷 P10262 [GESP样题 六级] 亲朋数

【题目来源】

洛谷:[P10262 GESP样题 六级] 亲朋数 - 洛谷

【题目描述】

给定一串长度为 \(L\)、由数字 \(0\sim 9\) 组成的数字串 \(S\)。容易知道,它的连续子串共有 \(\frac{L(L + 1)}2\) 个。如果某个子串对应的数(允许有前导零)是 \(p\) 的倍数,则称该子串为数字串 \(S\) 对于 \(p\) 的亲朋数。

例如,数字串 \(S\) 为“ \(12342\) ”、\(p\)\(2\),则在 \(15\) 个连续子串中,亲朋数有“ \(12\) ”、“ \(1234\) ”、“ \(12342\) ”、“ \(2\) ”、“ \(234\) ”、“ \(2342\) ”、“ \(34\) ”、“ \(342\) ”、“ \(4\) ”、“ \(42\) ”、“ \(2\) ”共 \(11\) 个。注意其中“ \(2\) ”出现了 \(2\) 次,但由于其在 \(S\) 中的位置不同,记为不同的亲朋数。

现在,告诉你数字串 \(S\) 和正整数 \(p\) ,你能计算出有多少个亲朋数吗?

【输入】

输入的第一行,包含一个正整数 \(p\)。约定 \(2 \leq p \leq 128\)
输入的第二行,包含一个长为 \(L\) 的数字串 \(S\)。约定 \(1 \leq L \leq 10^6\)

【输出】

输出一行一个整数表示答案。

【输入样例】

2
102

【输出样例】

5

【算法标签】

《洛谷 P10262 亲朋数》 #动态规划DP# #GESP#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
#define int long long  // 将int重新定义为long long类型
const int N = 150;  // 定义常量N,最大模数p的范围
int p, f[N], g[N], ans;  // p: 模数, f/g: 动态规划数组, ans: 结果计数
string s;  // 输入的数字字符串signed main()  // 因为使用了#define int long long, 所以用signed main
{cin >> p >> s;  // 输入模数p和数字字符串sint len = s.size();  // 获取字符串长度s = " " + s;  // 在字符串前添加空格,使索引从1开始for (int i = 1; i <= len; i++)  // 遍历字符串的每个字符{memset(g, 0, sizeof(g));  // 清空g数组,用于存储当前状态for (int j = 0; j < p; j++)  // 遍历所有可能的余数{// 状态转移: 从之前的余数j转移到新的余数t// 新的余数t = (j*10 + 当前数字) % pint t = (j * 10 + s[i] - '0') % p;  // 计算新余数g[t] += f[j];  // 从f[j]状态转移到g[t]}// 特殊情况: 当前数字单独构成子串g[(s[i] - '0') % p]++;  // 当前数字单独组成的数字对p取模ans += g[0];  // 统计余数为0的子串数量memcpy(f, g, sizeof(g));  // 将g数组复制到f数组,用于下一轮迭代}cout << ans << endl;  // 输出结果return 0;
}

【运行结果】

2
102
5
http://www.jsqmd.com/news/478456/

相关文章:

  • Ibis性能优化秘籍:让你的数据分析速度提升10倍
  • 从原理到调参:Torch-Pruning中的TaylorImportance剪枝算法深度解析
  • wav2letter终极词典构建指南:5步打造专业级语音识别系统
  • 终极TensorFlow NMT工具函数实战指南:从misc_utils到vocab_utils的完整教程
  • AnyPixel.js终极指南:用Web技术轻松构建交互式像素墙显示系统
  • 如何用密码学构建坚不可摧的云安全防线:基于Awesome Cryptography的完整加密策略指南
  • 质量工程读书笔记 - 零缺陷管理的基本原则
  • 生成式AI时代下的机器学习(2025)_李宏毅 | 第二讲_AI Agent的原理(AI如何通过经验调整行为、使用工具和做计划)
  • Piccolo Engine物理调试渲染器使用指南:Windows平台专属功能解析
  • Spring Cloud微服务监控体系终极指南:Spring Boot Admin与Hystrix Dashboard深度解析
  • AI Harness 工程:Agent 能跑起来的那一层到底是什么?
  • 如何利用 AST Explorer 调试 JavaScript 代码:实用案例教程
  • 如何快速安装和配置boto:AWS Python SDK完全指南
  • Code Surfer性能监控终极指南:如何快速分析和优化动画性能
  • Python 3 特殊方法终极指南:掌握 __str__、__getitem__、__call__ 等魔法方法
  • Colyseus 驱动程序终极指南:Redis、Mongoose 和 Mikro-ORM 的完整集成教程
  • 终极指南:使用node-config命令行参数覆盖配置的5个简单方法
  • xhyve安全加固终极指南:虚拟机隔离与访问控制配置详解
  • 如何高效掌握React批处理更新:深入解析batchedUpdates工作原理与实践技巧
  • Voltron终极指南:10个Python脚本自动化调试技巧
  • IPFS Desktop存储库位置管理终极指南:自定义路径与环境变量配置详解
  • 终极指南:http-parser构建系统详解与配置实战
  • 如何快速掌握xhyve虚拟化技术:APIC、IOAPIC与PIC中断协同工作原理详解
  • 移动端GIF生成神器:如何让sorry.xuty.tk在手机上完美运行
  • 终极Kubernetes CI/CD实战指南:10步构建自动化部署流水线的完整教程
  • 为什么选择Rod?5大核心优势让Web自动化变得简单高效
  • 如何通过命令行参数灵活覆盖Node-config配置:动态配置的终极指南
  • UG NX 拟合曲面
  • 终极指南:如何为doctest贡献代码并成为开源项目开发者
  • 终极指南:如何通过eqMac音频单元托管集成第三方效果器