正题

题目链接: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]数学作业【矩阵乘法,数学】相关推荐

  1. 【BZOJ2326】【HNOI2011】数学作业 [矩阵乘法][DP]

    数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description Input 输入文件只有一行为用 ...

  2. [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)

    Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ ...

  3. 【bzoj2326】[HNOI2011]数学作业 矩阵乘法

    题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...

  4. BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )

    BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...

  5. 数学知识——矩阵乘法

    矩阵乘法 文章目录 矩阵乘法 引入 例题 斐波那契前 n 项和 思路 代码 佳佳的斐波那契 思路 代码 引入 由于线性递推式可以表示成矩阵乘法的形式,也通常用矩阵快速幂来求线性递推数列的某一项. 利用 ...

  6. 算法提高课-数学知识-矩阵乘法-AcWing 1303. 斐波那契前 n 项和:矩阵乘法,快速幂,线性代数

    题目分析 来源:acwing 分析: 先利用矩阵运算的性质将通项公式变成幂次形式,然后用快速幂的方法求解第 n项. 斐波那契数列的递推公式:f1=f2=1,fn=fn−2+fn−1(n≥3)f_1 = ...

  7. 【考题·数学】矩阵游戏(数学推导)

    问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,-M,第二行的数字是M+1,M+2-2*M,以此类推,第N行的数字是(N-1)*M+1,(N-1)M+2 ...

  8. #100. 矩阵乘法

    #100. 矩阵乘法 内存限制:256 MiB时间限制:2000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 这是一道模板题. 分别给定 ...

  9. 洛谷 P3216 [HNOI2011]数学作业

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P3216 [HNOI2011]数学作业 题目 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正 ...

最新文章

  1. 《Cortex-M0权威指南》之体系结构---异常和中断
  2. Idea中类实现Serializable接口 引入 serialVersionUID
  3. 百道Python面试题实现,搞定Python编程就靠它
  4. Linux 内核中的 cdev_alloc和cdev_add
  5. python标准库os的方法listdir_使用python标准库快速修改文件名字
  6. u盘盘符不显示 win10_荣耀16.1锐龙版 linux装win10教程
  7. unity android 原生,unity创建Android原生插件
  8. linux获取打开串口失败的原因,linux – 从串口读取失败
  9. 利用函数指针实现累加
  10. 音乐播放微信小程序基于node.js后台
  11. Android图标下载网站
  12. 要想文章好,图片少不了,22个技能助您获得美图(带字幕视频)
  13. 3年半工作经验女程序员,聊聊程序员的薪水、工作内容和发展前景
  14. IntelliJ IDEA 2019 激活注册码
  15. multiset upper_bound() 与 lower_bound()
  16. 详解区块链项目如何做主体搭建?
  17. JavaScript-Pink
  18. jenkin swindows启动_Windows环境下实现Jenkins自动化部署
  19. springboot使用actuator
  20. 稀疏光流和稠密光流,OpenCV实现

热门文章

  1. linux脚本开机挂载,案例七:shell实现开机自动挂载本地YUM仓库程序
  2. 和flag_不怕立Flag,就怕没有Flag
  3. capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...
  4. 两向量点乘坐标运算_高三数学冲刺复习之向量小题的题型总结(含好用的补充公式)...
  5. java跨库调用存储_存储库仅在第二个调用数据时发送回ViewModel
  6. 卡屏java_Java drawImage到屏幕上一卡一卡的
  7. 每天一小时python官方文档学习(四)————数据结构之列表
  8. 一文了解贪心算法和回溯算法在前端中的应用
  9. [JavaWeb-JDBC]JDBC概念
  10. [C++STL]C++ 实现map容器和set容器