news 2026/6/10 19:05:22

《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/10 11:12:00

大语言模型(LLM)学习原理深度解析:从超级学生到词语社交网络

文章将大语言模型比喻为"超级学生"&#xff0c;通过三步学习&#xff1a;1)词元化将文字转为数字编码&#xff1b;2)建立词语社交网络&#xff0c;统计词语间关联强度&#xff1b;3)玩文字接龙游戏预测最可能的下一个词。LLM学习的是语言模式和思维方式而非固定答案&…

作者头像 李华
网站建设 2026/6/10 11:12:27

程序员必看!LoRA大模型微调技术详解:从概念到实践的收藏级教程

文章介绍LoRA技术通过低秩分解模拟参数变化&#xff0c;冻结预训练模型参数只训练少量新增矩阵&#xff0c;实现高效微调。详细解释了LoRA的概念、特点、优缺点&#xff0c;以及训练过程中的参数选择&#xff08;如rank、alpha&#xff09;和技巧。LoRA具有节省存储、不增加推理…

作者头像 李华
网站建设 2026/6/9 18:29:31

小白也能学会!本地大模型全部署教程(Mac+Win)

本文详细介绍了使用Ollama工具在Mac和Windows系统上本地部署大模型的完整教程&#xff0c;无需编程基础即可操作。文章解释了本地部署的优势&#xff08;隐私保护、断网可用、不触发屏蔽词等&#xff09;&#xff0c;提供了两种部署方式的详细步骤&#xff0c;比较了本地与云端…

作者头像 李华
网站建设 2026/6/10 1:45:33

为什么程序员都在学大模型?掌握未来AI核心技术的全面指南

大模型已成为AI变革核心引擎&#xff0c;深入各行各业。掌握RAG、AI Agent等技术的人才需求旺盛&#xff0c;薪资优厚。开源生态如DeepSeek、通义千问为学习者提供绝佳机会。"大模型之心Tech"社区提供全栈学习路线、技术交流和求职资源&#xff0c;帮助小白入门、进阶…

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

基于STM32的多功能智能睡眠枕头

目录核心功能概述硬件架构设计软件算法实现典型应用场景开发注意事项源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;核心功能概述 STM32多功能智能睡眠枕头集成多种传感器与算法&#xff0c;通过实时监测用户睡眠数据&#xff08;如脑…

作者头像 李华
网站建设 2026/6/10 15:04:01

stm32燃气检测系统

目录STM32燃气检测系统概述核心硬件组成软件功能设计典型应用场景开发工具与资源源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;STM32燃气检测系统概述 STM32燃气检测系统是基于STM32微控制器开发的智能气体监测方案&#xff0c;主要用…

作者头像 李华