
数学-快速幂/矩阵快速幂
LYoGa
这个作者很懒,什么都没留下…
展开
-
HDU4965-Fast Matrix Calculation(矩阵快速幂)
题目链接题意:n*k的矩阵A和一个k*n的矩阵B,C = A * B。求M = (C)^(n * n)时,矩阵M中每个元素的和(每个元素都要MOD6)思路:因为n最大到1000,所以不能直接用矩阵快速幂求AB的n*n次幂,但是可以将公式稍微转换下,M = AB * AB...* AB = A * (BA) *... * (BA) * B,这样BA的n*n -1次幂就能用原创 2014-09-05 14:55:23 · 769 阅读 · 0 评论 -
HDU2842-Chinese Rings(递推+矩阵快速幂)
题目链接题意:求出最少步骤解出九连环。取出第k个的条件是,k-2个已被取出,k-1个仍在支架上。思路:想必九连环都玩过吧,其实最少步骤就是从最后一个环开始,向前一直取出来就行了。所以假设取出前n个环所需要的步骤为f(n),那么在此之前f(n - 2)要被取出,再加上1,即第n个环被取出,所以只剩下第n-1环没被取出,那么我们将前n-2环再套上去(套上去和取下来的步骤是一原创 2014-09-03 10:41:46 · 1013 阅读 · 0 评论 -
HDU5015-233 Matrix(矩阵快速幂)
题目链接题意:给定一个矩阵的第0列的第1到n个数,第一行第1个数开始每个数分别为233, 2333........,求第n行的第m个数。思路:将第一行的数全部右移一位,用前一列递推出下一列,构造矩阵,类似如下 1 0 0 0 0 0 0 1 10 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0原创 2014-09-16 22:50:06 · 1040 阅读 · 0 评论 -
HDU2604-Queuing(递推+矩阵快速幂)
题目链接题意:男为f,女为m,求在长度为L的队列中不存在fmf,fff这样子序列的序列的个数。思路:又是递推题,假设长度为L的队列中存在的序列个数为f(L),那么考虑最后一个放的字母,假设最后一个放m,那么前L-1个可以随意排列,即个数为f(L - 1);如果最后一个放f,那么考虑后两个字母,可能出现的情况为ff,mf,这样比较难判断是否符合题目要求的,所以我们考虑后三原创 2014-09-03 15:32:44 · 848 阅读 · 0 评论 -
HDOJ 2294 - Pendant(DP+矩阵快速幂)
题目链接题意:有个高富帅,要送个很装逼的吊坠给他女朋友。他有k种珠子,然后要串成一个珠子个数小于等于n 的链子(k种珠子都必须要用到)。输入n和k,输出他可以做出多少种不一样的项链。思路:可以想到递推式f(x, y) = f(x – 1, y) * y + f(x – 1, y – 1) * (k – y + 1)(表示x个珠子用了y种类型),因为n过大,无法直接用求出原创 2014-09-02 15:54:26 · 862 阅读 · 0 评论 -
HDU2276 - Kiki & Little Kiki 2(矩阵快速幂)
题目链接题意:有n盏灯,编号从1到n。他们绕成一圈,也就是说,1号灯的左边是n号灯。如果在第t秒的时候,某盏灯左边的灯是亮着的,那么就在第t+1秒的时候改变这盏灯的状态。输入m和初始灯的状态。输出m秒后,所有灯的状态。思路:其实每盏灯的状态之和前一盏和自己有关,所以可以得到一个关系矩阵。假设有6盏灯,因此可以得到关系矩阵如下: (1, 0, 0, 0, 0, 1)原创 2014-09-02 23:59:47 · 1142 阅读 · 0 评论 -
HDU2256-Problem of Precision(矩阵构造+快速幂)
题目链接题意:求sqrt(sqrt(2) + sqrt(3)) ^ 2n MOD 1024思路:代码:#include #include #include #include #include using namespace std;const int MOD = 1024;int n;struct mat { i原创 2014-08-31 23:31:52 · 845 阅读 · 0 评论 -
HDU3117-Fibonacci Numbers(矩阵快速幂+log)
题目链接题意:斐波那契数列,当长度大于8时,要输出前四位和后四位思路:后四位很简单,矩阵快速幂取模,难度在于前四位的求解。 已知斐波那契数列的通项公式:f(n) = (1 / sqrt(5)) * (((1 + sqrt(5)) / 2) ^ n - ((1 + sqrt(5)) / 2) ^ n),当n >= 40时((1 + sqrt(5)) / 2) ^ n近原创 2014-08-30 14:26:48 · 1395 阅读 · 0 评论 -
HDU1757-A Simple Math Problem(矩阵快速幂)
题目链接题意:求出f(k) % m思路:f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10),所以可以得到一个矩阵 (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) (1, 0, 0, 0, 0, 0, 0, 0, 0, 0) (0, 1, 0,原创 2014-08-30 11:24:03 · 964 阅读 · 0 评论 -
HDU1575-Tr A(矩阵快速幂)
题目链接题意:A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。思路:简单的矩阵快速幂代码:#include #include #include #include #include using namespace std;//typedef long long ll;typedef __int原创 2014-08-29 23:47:30 · 1667 阅读 · 0 评论 -
HDU1061-Rightmost Digit(快速幂取模)
题目链接题意:求n^n的个位数的值。思路:快速幂求值代码:#include #include #include #include #include using namespace std;typedef long long ll;ll a, b, n, m;struct mat{ ll s[2][2]; mat() {原创 2014-08-29 22:28:56 · 851 阅读 · 0 评论 -
FZU1911-Construct a Matrix(矩阵快速幂+规律)
题目链接原创 2014-08-29 15:42:29 · 928 阅读 · 0 评论 -
UVA11609 - Teams(组合数学+快速幂)
题目链接题意:从N个人中选出K个人为一只队伍(1 思路:依题目可得ans = sum(i * C(i, n)),化简可得ans = n * sum(C(i, n - 1)) = n * 2 ^ (n - 1)。之后用快速幂求解。代码:#include #include #include #include #include typedef long原创 2014-09-11 20:57:54 · 1006 阅读 · 0 评论 -
UVA10299- Modular Fibonacci(斐波那契数列+矩阵快速幂)
题目链接题意:给出n和m,求出f(n) % m, f(x)为斐波那契数列。思路:因为n挺大的,如果直接利用公式计算很有可能会TLE,所以利用矩阵快速幂求解,|(1, 1), (1, 0)| * |f(n - 1), f(n - 2)| = |f(n), f(n - 1)|,所以求f(n)相当于|f(1), f(0)|乘上n - 1次的|(1, 1), (1, 0)|。原创 2014-08-28 16:37:52 · 1170 阅读 · 0 评论 -
UVA10518 - How Many Calls?(矩阵快速幂)
题目链接题意:求第n个斐波那契数的递归次数MOD b思路:用矩阵快速幂求斐波那契数列,然后打表找出递归次数的规律为f(n) = 2 * F(n) - 1(F(n)为斐波那契数)。代码:#include #include #include #include #include typedef long long ll;using namespace原创 2014-08-28 20:34:37 · 950 阅读 · 0 评论 -
UVA10006- Carmichael Numbers
#include #include #include #include typedef long long LL;const int N = 65005;int n, m, cnt;int prime[N];void P() { m = sqrt(N + 0.5); for (int i = 2; i < m; i++) if (!prime原创 2014-05-03 21:30:49 · 537 阅读 · 0 评论 -
HDU4565-So Easy!(共轭运用+矩阵快速幂)
题目链接题意: 求解 思路:记(a+b√)n为An,配项Cn=An+Bn=(a+b√)n+(a−b√)n两项恰好共轭,所以Cn是整数。又根据限制条件(a−1)2ba2⇒0a−b√1⇒0(a−b√)n1⇒Bn1也就是说Cn=⌈An⌉Sn=(Cn)%m求Cn的方法是递推。 对Cn乘以(a+b√)+(a−b√)于原创 2014-09-05 19:00:13 · 1004 阅读 · 0 评论 -
HDU1588-Gauss Fibonacci(矩阵快速幂+等比数列二分求和)
题目链接题意:g(x) = k * x + b。f(x) 为Fibonacci数列。求f(g(x)),从x = 1到n的数字之和sum,并对m取模。思路: 设A = |(1, 1),(1, 0)| sum = f(b) + f(k + b) + f(2k + b)...+f((n-1)k + b) (f(x) 为Fibonacci数列) sum = A^原创 2014-09-03 21:52:00 · 1058 阅读 · 0 评论