BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位。

这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理, 那么10^t就可以确定,加上快速幂就行了

------------------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef int matrix[3][3];
ll N;
int MOD;
matrix mat, Q, tmp;
void Mul(matrix &a, matrix &b) {
memset(tmp, 0, sizeof tmp);
for(int i = 0; i < 3; i++)
for(int k = 0; k < 3; k++)
for(int j = 0; j < 3; j++)
if((tmp[i][j] += ll(a[i][k]) * b[k][j] % MOD) >= MOD)
tmp[i][j] -= MOD;
memcpy(a, tmp, sizeof a);
}
void Power(matrix &a, matrix &b, ll k) {
for(; k; k >>= 1, Mul(b, b))
if(k & 1) Mul(a, b);
}
void Init_matrix() {
memset(mat, 0, sizeof mat);
mat[0][1] = mat[0][2] = mat[1][1] = mat[1][2] = mat[2][2] = 1;
memset(Q, 0, sizeof Q);
for(int i = 0; i < 3; i++)
Q[i][i] = 1;
}
int main() {
scanf("%lld%d", &N, &MOD);
int len = 0, B = 0, C = 0;
ll p = 1;
for(ll t = N; t; t /= 10, len++);
for(int i = 1; i < len; i++) {
Init_matrix();
mat[0][0] = (p = p * 10) % MOD;
Power(Q, mat, p - p / 10);
B = (ll(B) * Q[0][0] % MOD + ll(C) * Q[0][1] % MOD + Q[0][2]) % MOD;
C = ((p % MOD) - 1 + MOD) % MOD;
}
Init_matrix();
mat[0][0] = p * 10 % MOD;
Power(Q, mat, N - p + 1);
B = (ll(B) * Q[0][0] % MOD + ll(C) * Q[0][1] % MOD + Q[0][2]) % MOD;
printf("%d\n", B);
return 0;
}

------------------------------------------------------------------------------------

2326: [HNOI2011]数学作业

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1452  Solved: 841
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

Sample Output

HINT

Source

矩阵乘法

转载于:https://www.cnblogs.com/JSZX11556/p/4998660.html

BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )相关推荐

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

    2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2249  Solved: 1301 [Submit][St ...

  2. bzoj 2326: [HNOI2011]数学作业

    Description 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题:给定正整数 N 和 M 要求计算 Concatenate (1 .. N) Mod M 的值,其中 Conc ...

  3. bzoj 3329: Xorequ(DP+矩阵快速幂)

    3329: Xorequ Time Limit: 1 Sec  Memory Limit: 256 MB Submit: 1134  Solved: 491 [Submit][Status][Disc ...

  4. bzoj 1297: [SCOI2009]迷路(矩阵快速幂)

    1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1322  Solved: 938 [Submit][Statu ...

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

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

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

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

  7. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

  8. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  9. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. firefox扩展开发(二):用XUL创建窗口控件
  2. Nginx变身爆火神器,手把手教你在永洪BI中应用
  3. Python数据格式:%s字符串,%d整型,%f浮点型
  4. SSH无法连上CentOS7的问题
  5. ABAP enablement in Sublime Text
  6. Maven实战:Pom.xml详解
  7. 服务器磁盘操作系统双机软件集成,实战:ROSE HA双机热备系统安装指南
  8. java xml特殊字符转义_Java中将xml文件转化为json遇到特殊字符会报错!
  9. Redis 配置文件杂项。
  10. bat批处理命令大全(翻译转载)
  11. 毕业设计 嵌入式 stm32车牌识别系统
  12. 搜狗拼音linux 知乎,搜狗拼音知乎专版下载
  13. 申请CSDN博客专家和码云推荐项目
  14. 计算机提示资源管理器停止,电脑开机黑屏并弹出Windows 资源管理器已停止工作该怎么办?...
  15. EndNote X9使用教程
  16. UVA1389 Hard Life
  17. Navicat 被投毒了 | 调查结果来了
  18. php notice undefined variable,解决PHP提示Notice: Undefined variable的办法
  19. RJS与ActionView
  20. stm32 DMA转运ADC多通道

热门文章

  1. java基础知识大全,java 基础知识点汇总
  2. c语言实战1200例 pdf6,C语言程序设计6.6.2.pdf
  3. taro压缩_Taro 如何开始微信小程序的开发
  4. python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...
  5. What are training set, validation set and test set?
  6. 最大匹配 人员分配[邻接表]
  7. BZOJ 4327 [JSOI2012]玄武密码 (AC自动机)
  8. c char转int_C指针精华知识大汇总
  9. 如何用python绘图、柱形图、线形图等_python使用Plotly绘图工具绘制散点图、线形图...
  10. python私人兼职_python能做什么副业#下班后有哪些兼职副业