news 2026/6/22 0:12:59

《P3216 [HNOI2011] 数学作业》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P3216 [HNOI2011] 数学作业》

题目描述

小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题:

给定正整数 n,m,要求计算 Concatenate(n)mod m 的值,其中 Concatenate(n) 是将 1∼n 所有正整数 顺序连接起来得到的数。

例如,n=13,Concatenate(n)=12345678910111213。小 C 想了大半天终于意识到这是一道不可能手算出来的题目,于是他只好向你求助,希望你能编写一个程序帮他解决这个问题。

输入格式

一行两个正整数 n,m。

输出格式

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

输入输出样例

输入 #1复制

13 13

输出 #1复制

4

说明/提示

【数据范围】

对于 30% 的数据,1≤n≤106;
对于 100% 的数据,1≤n≤1018,1≤m≤109。

  • 2023.4.20 添加一组 hack 数据。

代码实现:

#include<iostream> #include<cstring> using namespace std; unsigned long long n, mod, pow10[20]; struct mat { int m[105][105] = {}; mat() {memset(m,0,sizeof(m));} mat operator * (const mat b) { mat res; for(int i = 1;i <= 3;i++) for(int j = 1;j <= 3;j++) for(int k = 1;k <= 3;k++) { res.m[i][j] += 1ll * m[i][k] * b.m[k][j] % mod; res.m[i][j] %= mod; } return res; } void output() { for(int i = 1;i <= 3;i++) { for(int j = 1;j <= 3;j++) printf("%lld ",m[i][j]); printf("\n"); } } }; mat qpow(mat x, long long b) { mat res; for(int i = 1;i <= 3;i++) res.m[i][i] = 1; while(b) { if(b&1) res = res * x; x = x * x; b >>= 1; } return res; } int cnt_dig(long long x) { int cnt = 0; while(x) { cnt++; x /= 10; } return cnt; } int main() { pow10[0] = 1; for(int i = 1;i < 20;i++) pow10[i] = pow10[i-1] * 10ll; scanf("%lld%lld",&n,&mod); mat trans, res; for(int i = 1;i <= 3;i++) res.m[i][i] = 1; for(int i = 1;i <= cnt_dig(n);i++) { trans.m[1][2] = trans.m[2][2] = trans.m[2][3] = trans.m[3][3] = 1; trans.m[1][1] = pow10[i] % mod; if(i == 1) res = res * qpow(trans, min(n-pow10[i-1], pow10[i]-pow10[i-1]-1)); else res = qpow(trans, min(n-pow10[i-1]+1, pow10[i]-pow10[i-1])) * res; } printf("%lld",(res.m[1][1] + 2ll * res.m[1][2] + res.m[1][3]) % mod); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 18:52:32

2025最新大模型面试经验汇总+全套学习资源,小白到大神的进阶之路

新大模型面试经验汇总全套学习资源&#xff0c;小白到大神的进阶之路 文章汇总了多家科技公司的大模型(LLM)相关面试经验&#xff0c;包括字节跳动、网易伏羲、好未来等公司的面试问题和回答。同时提供了一套系统的大模型学习路线图&#xff0c;从基础概念理解到API应用开发&a…

作者头像 李华
网站建设 2026/6/20 10:23:05

【大学院-筆記試験練習:线性代数和数据结构(16)】

大学院-筆記試験練習&#xff1a;线性代数和数据结构&#xff08;16&#xff09; 1-前言2-线性代数-题目3-线性代数-参考答案4-数据结构-题目5-数据结构-参考答案中文解释&#xff08;题意&#xff09;日语答案&#xff08;1&#xff09;&#xff08;2&#xff09;&#xff08;…

作者头像 李华
网站建设 2026/6/20 11:37:14

基于stm32的便携式voc气体检测仪设计

目录硬件设计软件设计功能实现应用场景源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;硬件设计 STM32微控制器作为核心处理器&#xff0c;通常选择STM32F103系列&#xff0c;因其具备丰富的外设接口和低功耗特性。传感器模块选用高精度…

作者头像 李华
网站建设 2026/6/20 11:35:30

Golang pprof与缓存性能优化实战

Golang pprof与缓存性能优化实战 关键词&#xff1a;Golang pprof、性能分析、缓存优化、堆内存分析、CPU采样、内存泄漏、缓存命中率 摘要&#xff1a;在高并发系统中&#xff0c;缓存是提升性能的“加速器”&#xff0c;但缓存本身也可能成为新的瓶颈。本文将以“医生看病”的…

作者头像 李华
网站建设 2026/6/20 11:32:59

亲测BSHM人像抠图镜像,效果惊艳真实体验分享

亲测BSHM人像抠图镜像&#xff0c;效果惊艳真实体验分享 最近在做一批电商商品图的背景替换&#xff0c;需要把真人模特从各种复杂场景中干净利落地抠出来。试过好几款开源模型——MODNet跑得快但头发边缘毛躁&#xff0c;U2-Net细节好却慢得像在等咖啡凉透&#xff0c;Robust…

作者头像 李华
网站建设 2026/6/20 11:33:49

NeurIPS 2025多模态表征学习新突破:4篇论文详解

本文介绍了2025年NeurIPS会议上的4篇多模态表征学习论文&#xff0c;分别探讨了有限数据场景下的多模态对齐(STRUCTURE)、模态错位的理论价值、特征因果分解(FCD)方法以及通过视觉嵌入蒸馏(VisPer-LM)提升MLLM视觉感知能力。这些创新方法为解决多模态学习中的数据稀缺、噪声干扰…

作者头像 李华