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

《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; }
http://www.jsqmd.com/news/299327/

相关文章:

  • mysql生成的redo 记录是什么?
  • .NET周刊【12月】
  • FastAPI系列(11):静态文件请求
  • DAY42:统计前后缀下标Ⅰ+反转链表
  • 大语言模型(LLM)学习原理深度解析:从超级学生到词语社交网络
  • 程序员必看!LoRA大模型微调技术详解:从概念到实践的收藏级教程
  • 强烈安利8个AI论文网站,继续教育学生搞定论文必备!
  • 2025最新大模型面试经验汇总+全套学习资源,小白到大神的进阶之路
  • 基于时空异质性与跨模式交互的多模式交通需求预测:元学习方法详解
  • 转行AI的工程师看过来:Transformer+注意力机制详解,手写可运行PyTorch代码
  • CST License(Flexnet)设置与问题处理方法 - 详解
  • AI大模型面试宝典:全面解析大模型技术,助你轻松应对各类面试问题
  • 大模型时代,构建高质量数据基础设施的五大关键
  • 安全工具篇魔改二开CS消除流量特征Profile请求个性主题反编译去暗桩
  • 为什么程序员都在学大模型?掌握未来AI核心技术的全面指南
  • LLM微调终极指南:第七阶段监控与维护,让AI模型永不失控!【必收藏】
  • 【2026全网首发】AI智能体完全指南:面试必备+大模型开发实战+学习资源全解析
  • 【大学院-筆記試験練習:线性代数和数据结构(16)】
  • 生物医学研究新利器:自我进化LLM智能体架构与实战
  • 【必藏】大模型入门指南:从成本到架构的全景解析,程序员小白必看
  • 小白也能学会!本地大模型全部署教程(Mac+Win)
  • 无监督配准
  • ENSP Pro LAB笔记:配置M-LAG双归接入三层网络(V-STP + Monitor Link + OSPF)
  • 救命神器!MBA开题报告必备TOP8 AI论文平台深度测评
  • AT_abc442_g [ABC442G] Lightweight Knapsack
  • 基于STM32的有害气体检测系统
  • 基于STM32的汽车防盗报警系统设计
  • 基于STM32的电热水器控制系统设计
  • 2026年1月工业清洗与稀释剂厂家推荐榜单:脱漆剂/除蜡水/防锈油/溶剂油/助焊剂/碳氢清洗剂/环保型清洗剂/油墨稀释剂等专业化工产品源头供应
  • 基于STM32的土壤湿度检测系统