数论-矩阵快速幂&&快速幂
数论只会GCD
研二在读
展开
-
UVA 10689 矩阵快速幂 + 快速幂取模
uva 10689题意 a, b任意给定求出f(n)的后m位数题解构造矩阵去快速幂求模数10 ^ m矩阵快速幂求f(n)输出答案经验值~get 能用int表示的数据范围尽量不要用long long, 两发PEcode:/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon原创 2016-10-09 13:57:32 · 544 阅读 · 0 评论 -
HDU 2157 矩阵快速幂
HDU 2157题意分析:让你求两点间走k步可达方案数。题解:这题算是矩阵思想实际应用的典型了吧, 原始矩阵是一步可达, k阶幂刚好就是k步可达, 因为矩阵乘法本身sum(a[i][k] * b[k][j])(i->j多走一步的可达方案数), 还原这个模型。code:/*adrui's submission Language : C++Resu原创 2016-10-06 13:12:04 · 506 阅读 · 0 评论 -
hdu 1005 Number Sequence 构造矩阵 + 矩阵快速幂
HDU 1005题解: F(n) = a * F(n - 1) + b * F(n - 2) 可以用矩阵乘法{F(n - 1), F(n - 2)} * {{a, 1}, {b , 0}} = {F(n), F(n - 1)};如此类推{F(n), F(n - 1)} = {F(1), F(2)} * {{a, 1}, {b , 0}}^(n - 2);且F(1)原创 2016-10-06 15:59:52 · 386 阅读 · 0 评论 -
HDU 2604 递推 + 矩阵快速幂
HDU 2604题解:首先, 记长为n的队列的K队列数为f(n);易求得:f(0) = 0, f(1) = 2, f(2) = 4, f(3) = 6, f(4) = 9.当n >= 5时, 运用递推关系可推出:f(n) = f(n - 1) + f(n - 3) + f(n - 4);具体推导过程如下:设f(n)为字符串长度为n时复合条件的字原创 2016-10-06 18:37:40 · 415 阅读 · 0 评论 -
ZOJ 3772 矩阵 + 线段树
传送门 :zoj 3772 题解 还是节点存储矩阵, 不过这题各哥节点基矩阵不同, 所以要考虑方向,wa + 3, pe + 1AC code:#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define mid ((l + r) >> 1)#define ls rt << 1, l, mi原创 2016-12-10 18:41:33 · 464 阅读 · 0 评论 -
ZOJ 2671 线段树 + 矩阵区间乘积
传送门 : zoj 2671summary 下次, 线段树不用cin, cout了有毒啊AC code:#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxn = 30000 + 5;int R, n, M, q;struct Matrix { int v[2][2原创 2016-12-10 23:11:16 · 725 阅读 · 0 评论 -
CodeForces - 719E Sasha and Array 线段树 + 矩阵快速幂
传送门:CF 719 E题解 区间更新 注意这里节点是矩阵, 所以初始化要是E 矩阵结合律 + Fibo la表示lazy不过这里是矩阵, 所以初始是E, sum是区间的ans矩阵, lazy纯粹的标记AC code:/*adrui's submissionLanguage : C++Favorite : Dragon BallsLover : yyMotto :原创 2016-12-09 23:05:41 · 540 阅读 · 0 评论 -
codeforces 742A-Arpa’s hard exam and Mehrdad’s naive cheat 快速幂
传送门 : CF 742A题解 直接做8的快速幂, 因为模数是10 用周期做也可以, 不过我优化不到0ms…AC code/*adrui's submission Language : C++ Result : Accepted Lover : zyy Favorite : Dragon Balls Standing in the Hall of Fame*/#in原创 2016-12-16 19:48:50 · 575 阅读 · 0 评论 -
HDU 4686 矩阵快速幂
题解拿到手, 想到是递推转矩阵快速幂, 但是我想的复杂了 刚开始想的是用a[n] * b[n]的递推构造矩阵+ 分块 + 快速幂, 不过这时候开的矩阵是10 * 10一组最大多O(size^3) * log n size为矩阵阶数然后考虑Sn简化5 * 5, 细节处理A, 还是太弱了啊, 矩阵练了这么多。。code#include <iostream>#include <cstring>原创 2017-03-30 13:44:18 · 591 阅读 · 0 评论 -
HDU 5667 矩阵快速幂 + 费马小定理 + 快速幂
题解看完题目第一反应, 矩阵快速幂, 但是乘法无法构造递推想到幂的乘法可以转成指数的加法设f[n] = ap[n],则n > 2时 f[n] = abf[n-1]c f[n-2]=> p[n] = b + p[n - 1] * c + p[n - 2]就可以构造矩阵了且p[1] = 0, p[2] = b构造矩阵 ⎡⎣⎢p[2]00p[1]00b00⎤⎦⎥∗⎡⎣⎢c11100001⎤⎦原创 2017-03-15 22:35:34 · 486 阅读 · 0 评论 -
AOJ 401 gcd定理 + 矩阵快速幂
传送门:AOJ 401题解 fibonacci数列的性质: gcd(fib(n),fib(m))=fib(gcd(n,m)) 证明:可以通过反证法先证fibonacci数列的任意相邻两项一定互素,然后可证n>m时gcd(fib(n),fib(m))=gcd(fib(n-m),fib(m)),递归可 求gcd(fib(n),fib(m))=gcd(fib(k),fib(l)),最原创 2016-10-18 01:05:13 · 634 阅读 · 0 评论 -
HDU 4549 矩阵快速幂 + 快速幂取模 + 费马小定理
HDU 4549题解: 首先能够观察到, 各项a, b的指数满足斐波那契数列, 且a得指数是b的指数的前一项。如: f[0] = a ^ 1 * b ^ 0 f[ 1 ] = a ^ 0 * b ^ 1f[2] = a ^ 1 * b ^ 1,f[3] = a ^ 1 * b ^ 2f[4] = a ^ 2 * b ^ 3原创 2016-10-03 17:06:13 · 499 阅读 · 0 评论 -
poj 3233 矩阵乘法(分块矩阵)
POJ 3233题解:Sn为所求矩阵, 则这样, 此题就变成了求矩阵幂和矩阵乘法, 分块矩阵乘法和普通矩阵一样的。code:/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon BallsStanding in the Ha原创 2016-10-03 15:36:15 · 1212 阅读 · 0 评论 -
hdu 1143 递推 + 矩阵快速幂做法
HDU 1143递推过程(转) 转:::,如果n为奇数,必然无解。 当n为偶数时,一个比较直观的思路就是把大矩形用竖线切出左边一部分,然后递归求解,就像UVA_10359那样,直接考虑最左边一个小矩形是如何构成的我们就可以递归得到f(n)递推式。 虽然这个题目乍看上去小矩形似乎拼法比较多,而且要拼出一个不能再用竖线切分的小矩形似乎拼的方法也并不直观。但如果我们在纸上多画一画的话,对原创 2016-10-10 20:06:58 · 502 阅读 · 0 评论 -
HDU 1757 矩阵快速幂
传送门: HDU 1757题解: 简单的矩阵构造 构造矩阵时注意数组不要溢出, 或者把数组开大构造 |0 1 0 ……… .0| * |f(0)| = | f(1) | |0 0 1 ………. 0| * |f(1)| = | f(2) | |…………………1| * |……| = |……..| |a9 a8 ………a0|原创 2016-10-11 21:21:54 · 394 阅读 · 0 评论 -
hihoCoder 1143 矩阵快速幂
传送门: HihoCoder 1143题解递推: f[n] = f[n - 1] + f[n - 2]; 过程: 放2* n个骨牌时(n >= 3)最后一列竖直放方案数为f[n - 2]最后两列放两个横放, 为f[n - 2]得证构造: (1110)\bigl( \begin{smallmatrix} 1 & 1 \\ 1 & 0 \end{smallmatrix} \bigr) *原创 2016-10-12 12:24:24 · 526 阅读 · 0 评论 -
HihoCoder 1151 矩阵快速幂 + 取模
传送门:HihoCoder 1151题解题意 + 递推 同HDU 1143 传送门: HDU 1143解题报告坑点 因为这题n值比较大, 所以和HDU 1143不同, 必须用快速幂取模, 而使用快速幂加速的时候, 因为递推公式有-1的因子, 所以最终求的ans 可能为负值, 如果为负值, 要加上模数才对code:/*adrui's submissionLanguage : C++原创 2016-10-12 13:02:32 · 854 阅读 · 0 评论 -
HDU 2256 矩阵快速幂
传送门:HDU 2256题意 给定n, 求(2 ^ 1 / 2 + 3 ^ 1 / 2) ^ n的整数部分, 并对1024取模题解 推导公式 构造矩阵code/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon BallsStanding in the Hall原创 2016-10-13 22:35:28 · 488 阅读 · 0 评论 -
HDU 1097 快速幂取模
传送门:HDU 1097题意 求a ^ b % 10题解 快速幂取模/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon BallsStanding in the Hall of Fame*/#include<cstdio>#include<cstring>using原创 2016-10-14 13:39:17 · 417 阅读 · 0 评论 -
hihocoder 1195 高斯消元
链接:HIHO 1195题解:额, hihocoder给的提示已经很详细了, 转成上三角矩阵, 这题是不需要考虑浮点解得, 需要考虑浮点解的题目应该是需要求LCM的。。。code://adrui's submission#include#include#include#includeusing namespace std;#defi原创 2016-09-30 20:06:44 · 532 阅读 · 1 评论 -
南邮1340 矩阵逆 初等行转换
题目链接; noj1340好长时间没写博客了, 今天刚学矩阵逆, 找到裸题, 试试, 嘿嘿题解: 初等行转换, (A, E) -> (E, A^-1);code:#include#include#include#includeusing namespace std;const int maxn = 100 + 5;int n,原创 2016-09-26 21:33:47 · 629 阅读 · 0 评论 -
poj 3070 矩阵快速幂
POJ 3070题解: 矩阵快速幂。 转载一篇文章:关于快速幂和矩阵快速幂code:/*adrui's submission Language : C++Result : AcceptedLove : llfavorite : Dragon BallsStanding in the Hall of Fame*/#include#in原创 2016-10-02 14:40:43 · 461 阅读 · 0 评论 -
HDU 3306 矩阵快速幂
题解: S(n) = S(n - 1) + A(n)^2 = S(n-1) + x^2*A(n-1)^2 + 2*x*y*A(n-1)A(n-2) +y^2*A(n-2)^2构造矩阵code : #include #include #include using namespace std;const int p = 10007;int n, x, y;st原创 2017-04-22 16:16:16 · 576 阅读 · 0 评论