当我知道这题矩阵可以用费马小定理搞快速幂的时候 我眼泪都要落下来了QAQ

首先求一发通项F[1][1]->F[2][1]的通项

然后写成A+B的形式

若a != 1

A = (a^(m-1))*c

B = b*((a^(m-1))/(a-1)) * c + d

若a == 1

A = c

B = B * (m-1) * c + d

那么从F[1][1]->F[n][1]可以写作

F[n][1] = A^(n-1) + B * ( (A^(n-1) - 1) / (A-1))

然后再用F[n][1]推到F[n][m]就好啦

莫名其妙代码长好多QAQ

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#define SF scanf
#define PF printf
using namespace std;
typedef long long LL;
typedef long double LD;
inline int read() {int x = 0, f = 1; char ch = getchar();while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); }while('0' <= ch && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }return x*f;
}
const int MAXN = 1000000;
const int MOD = 1000000007;
char n[MAXN+10], m[MAXN+10];
int A, B, a, b, c, d, X, Y, XX;
int lenn, lenm;
int powa[MAXN+10], powA[MAXN+10];
inline int pow_mod(int x, int k) {int ret = 1;while(k) {if(k & 1) ret = 1LL * ret * x % MOD;x = 1LL * x * x % MOD;k >>= 1;}return ret;
}
inline int pow_mod(char *s, int len, int *t) {int ret = 1;for(int i = 0; i < len; i++) {int x = len-i-1;for(int p = 0; p < s[i]-'0'; p++)ret = 1LL * ret * t[x] % MOD;}return ret;
}
inline int inv(int x) {return pow_mod(x, MOD-2);
}
inline int getint(char *s, int len) {int ans = 0;for(int i = 0; i < len; i++)ans = (1LL * ans * 10 + s[i] - '0') % MOD;return ans;
}
void Doit() {       int ans = 0;powA[0] = A;powA[1] = pow_mod(A, 10);for(int i = 2; i <= lenn; i++) powA[i] = pow_mod(powA[i-1], 10);X = 1LL * pow_mod(n, lenn, powA) * inv(A) % MOD;if(A != 1) ans = ((X + 1LL * B * (X-1) % MOD * inv(A-1) % MOD) % MOD + MOD) % MOD;else ans = ((1 + 1LL * B * (getint(n, lenn)-1)) % MOD + MOD) % MOD;if(a != 1) ans = ((1LL * ans * XX % MOD + 1LL * b * (XX-1) % MOD * inv(a-1) % MOD) % MOD + MOD) % MOD;else ans = ((ans + 1LL * b * (getint(m, lenm)-1) % MOD) + MOD) % MOD;PF("%d\n", ans);
}
int main() {SF("%s%s%d%d%d%d", n, m, &a, &b, &c, &d);lenn = strlen(n); lenm = strlen(m);powa[0] = a; powa[1] = pow_mod(a, 10);for(int i = 2; i <= lenm; i++) powa[i] = pow_mod(powa[i-1], 10);if(a != 1) {XX = 1LL * pow_mod(m, lenm, powa) * inv(a) % MOD;A = 1LL * XX * c % MOD;B = (1LL * b * (XX-1) % MOD * inv(a-1) % MOD * c % MOD + d) % MOD;Y = (XX + 1LL * b * (XX-1) % MOD * inv(a-1) % MOD) % MOD;}else {A = c % MOD;B = 1LL * b * (getint(m, lenm)-1) % MOD;Y = (B+1) % MOD;B = (1LL * B * c + d) % MOD;if(B < 0) B += MOD;}Doit();
}
/*
300000000001234560000000000000000000 400000002315654564897891231560000000000000000000000000 99999999 99999999 99999999 999999999
*/

[BZOJ3240][Noi2013]矩阵游戏 快速幂相关推荐

  1. BZOJ3240 NOI2013矩阵游戏(数论)

    必修五题. // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include<cmath> ...

  2. (十进制快速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3240 3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec  M ...

  3. BZOJ 3240 [Noi2013] 矩阵游戏 题解

    转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24594825 [原题] 3240: [Noi2013]矩阵游戏 Time Limit ...

  4. P1397 [NOI2013] 矩阵游戏(矩阵乘法欧拉定理)

    P1397 [NOI2013] 矩阵游戏(矩阵乘法&欧拉定理) #include<bits/stdc++.h> using namespace std; typedef long ...

  5. HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  6. BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 123   Solved: 73 [ Submit][ St ...

  7. 求解斐波那契第n项的几种解法(含矩阵乘法+快速幂) Python实现

    斐波那契数列 首先我们来定义一下斐波那契数列: f(n)={0n = 01n = 1f(n−1)+f(n−2)n > 1f(n)= \begin{cases} 0 & \text {n ...

  8. 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)

    2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...

  9. [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats

    矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...

最新文章

  1. Keras K.switch()用法
  2. 【刘文彬】区块链3.0:拥抱EOS
  3. Uipath 学习栏目基础教学:7、uipath 用open browser实现打开网页并登录
  4. 【牛客 - 181B】送分题(另类求解a+b,二分)
  5. jenkins 手动执行_Jenkins Git client插件命令执行漏洞(CVE201910392)
  6. 【转载】GuanDan v2.01 发布
  7. 运行wpf_在WPF中一种较好的绑定Enums数据方法
  8. AI PRO I 第4章 译文 Behavior Selection Algorithms An Overview
  9. 【2016年第4期】国务院批复建立促进大数据 发展部际联席会议制度
  10. Visual Studio Community2019 30天试用期过期,无法登录微软账户
  11. c盘满了怎么迁移软件到其他盘,c盘变红了文件怎么迁移
  12. 2020形式化方法复习笔记
  13. php错误测试,对 PHP 错误进行测试
  14. linux memwatch的内存检测-double-free
  15. 编程之美 - 中国象棋将帅问题
  16. android wifi布局,Android使用 WiFi 建立 P2P 连接
  17. CC2640R2F学习笔记(1)——搭建环境、编译烧写
  18. 设计c语言程序能否订火车票,C语言-购买火车票原理
  19. iOS程序中调用系统自带应用(短信,邮件,浏览器,地图,appstore,拨打电话,iTunes,iBooks )...
  20. dw cc 2019如何为命令添加快捷键

热门文章

  1. AcrelCloud-9500电瓶车充电桩收费平台在公共场所中的应用
  2. 哇,你也想自由职业啊
  3. 恒源云GPU登录Linux实例使用记录
  4. 在死亡边缘疯狂试探:“黑暗旅游”,你敢尝试吗?
  5. vscode遇到无法访问此网站问题的两种解决方法
  6. PV、UV、CTR含义
  7. Linux rm/rmdir 命令使用介绍
  8. Dell服务器电源配置规则
  9. matlab 股票 小波,小波分析 + 支持向量机(SVM)预测股票涨跌幅的实现
  10. 文件锁(一)——文件锁的概述