P3216-[HNOI2011]数学作业【矩阵乘法,数学】
正题
题目链接:https://www.luogu.org/problemnew/show/P3216
题目大意
求1∼n1\sim n1∼n连起来%m\% m%m之后的值。
解题思路
我们可以考虑矩乘,但是当xxx位数时每次乘上10x10^x10x,所以我们对于不同位分开处理就好了。
codecodecode
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const int Size=4;
struct matrix{ll a[Size][Size];
}f,a;
ll n,m,k,pn,z;
matrix operator *(matrix &a, matrix &b) {matrix c;memset(c.a,0,sizeof(c.a));for (ll i=0;i<Size;i++)for (ll j=0;j<Size;j++)for (ll k=0;k<Size;k++)(c.a[i][j]+=a.a[i][k]*b.a[k][j]%m)%=m;return c;
}
ll pows(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%m;x=x*x%m;b>>=1;}return ans;
}
void make_matrix(ll k)
{memset(a.a,0,sizeof(a.a));a.a[0][0]=z*10%m;a.a[1][0]=1;a.a[2][1]=1;a.a[1][1]=1;a.a[2][2]=1;f.a[0][1]=z%m;f.a[0][2]=1;
}
void power(ll b)
{/*while(b--)f=f*a;*/while(b){if(b&1) f=f*a;a=a*a;b>>=1;}
}
int main()
{scanf("%lld%lld",&n,&m);pn=n;k=0;z=1;while(n){k++;make_matrix(k);if(n/10)power(z*10-z);elsepower(pn-z+1);n/=10;z*=10;}printf("%lld",f.a[0][0]);
}
P3216-[HNOI2011]数学作业【矩阵乘法,数学】相关推荐
- 【BZOJ2326】【HNOI2011】数学作业 [矩阵乘法][DP]
数学作业 Time Limit: 10 Sec Memory Limit: 128 MB [Submit][Status][Discuss] Description Input 输入文件只有一行为用 ...
- [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)
Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ ...
- 【bzoj2326】[HNOI2011]数学作业 矩阵乘法
题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...
- BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )
BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...
- 数学知识——矩阵乘法
矩阵乘法 文章目录 矩阵乘法 引入 例题 斐波那契前 n 项和 思路 代码 佳佳的斐波那契 思路 代码 引入 由于线性递推式可以表示成矩阵乘法的形式,也通常用矩阵快速幂来求线性递推数列的某一项. 利用 ...
- 算法提高课-数学知识-矩阵乘法-AcWing 1303. 斐波那契前 n 项和:矩阵乘法,快速幂,线性代数
题目分析 来源:acwing 分析: 先利用矩阵运算的性质将通项公式变成幂次形式,然后用快速幂的方法求解第 n项. 斐波那契数列的递推公式:f1=f2=1,fn=fn−2+fn−1(n≥3)f_1 = ...
- 【考题·数学】矩阵游戏(数学推导)
问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,-M,第二行的数字是M+1,M+2-2*M,以此类推,第N行的数字是(N-1)*M+1,(N-1)M+2 ...
- #100. 矩阵乘法
#100. 矩阵乘法 内存限制:256 MiB时间限制:2000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 这是一道模板题. 分别给定 ...
- 洛谷 P3216 [HNOI2011]数学作业
PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P3216 [HNOI2011]数学作业 题目 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正 ...
最新文章
- 《Cortex-M0权威指南》之体系结构---异常和中断
- Idea中类实现Serializable接口 引入 serialVersionUID
- 百道Python面试题实现,搞定Python编程就靠它
- Linux 内核中的 cdev_alloc和cdev_add
- python标准库os的方法listdir_使用python标准库快速修改文件名字
- u盘盘符不显示 win10_荣耀16.1锐龙版 linux装win10教程
- unity android 原生,unity创建Android原生插件
- linux获取打开串口失败的原因,linux – 从串口读取失败
- 利用函数指针实现累加
- 音乐播放微信小程序基于node.js后台
- Android图标下载网站
- 要想文章好,图片少不了,22个技能助您获得美图(带字幕视频)
- 3年半工作经验女程序员,聊聊程序员的薪水、工作内容和发展前景
- IntelliJ IDEA 2019 激活注册码
- multiset upper_bound() 与 lower_bound()
- 详解区块链项目如何做主体搭建?
- JavaScript-Pink
- jenkin swindows启动_Windows环境下实现Jenkins自动化部署
- springboot使用actuator
- 稀疏光流和稠密光流,OpenCV实现
热门文章
- linux脚本开机挂载,案例七:shell实现开机自动挂载本地YUM仓库程序
- 和flag_不怕立Flag,就怕没有Flag
- capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...
- 两向量点乘坐标运算_高三数学冲刺复习之向量小题的题型总结(含好用的补充公式)...
- java跨库调用存储_存储库仅在第二个调用数据时发送回ViewModel
- 卡屏java_Java drawImage到屏幕上一卡一卡的
- 每天一小时python官方文档学习(四)————数据结构之列表
- 一文了解贪心算法和回溯算法在前端中的应用
- [JavaWeb-JDBC]JDBC概念
- [C++STL]C++ 实现map容器和set容器