BZOJ4128: Matrix(BSGS 矩阵乘法)】的更多相关文章

Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 813  Solved: 442[Submit][Status][Discuss] Description 给定矩阵A,B和模数p,求最小的x满足 A^x = B (mod p) Input 第一行两个整数n和p,表示矩阵的阶和模数,接下来一个n * n的矩阵A.接下来一个n * n的矩阵B Output 输出一个正整数,表示最小的可能的x,数据保证在p内有解 Sample Input 2 7 1 1…
题目 给定矩阵A, B和模数p,求最小的正整数x满足 A^x = B(mod p). 分析 与整数的离散对数类似,只不过普通乘法换乘了矩阵乘法. 由于矩阵的求逆麻烦,使用 $A^{km-t} = B(mod \ p)$ 形式的BSGS. 然后就是判断矩阵是否相等, 一种方法是对矩阵进行Hash, 这里为了防止两个不同矩阵的Hash值冲突,使用了两个底数进行Hash. #include<bits/stdc++.h> using namespace std; typedef long long l…
题目链接:https://vjudge.net/problem/HDU-4965 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2057    Accepted Submission(s): 954 Problem Description One day, Alice and Bob…
题目链接 题意 : 给你三个n维矩阵,让你判断A*B是否等于C. 思路 :优化将二维转化成一维的.随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小. #include <stdio.h> #include <string.h> #include <time.h> #include <stdlib.h> #include <iostream> using namespace std ; ][],b[][],…
一种奇葩的写法,纪念一下当时的RE. #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <string> #include <queue> #include <stack> #include <vec…
//构造矩阵类,重载乘法操作符 //作者:nuaazdh //时间:2011年12月1日 #include <iostream> using namespace std; //Matrix矩阵类 class Matrix { public: Matrix(int mm, int nn)//构造函数 { m=mm; n=nn; int i,j; data=new double*[mm]; for(i=0;i<mm;i++) data[i]=new double[nn]; for(i=0;i…
BZOJ_1712_[Usaco2007 China]Summing Sums 加密_矩阵乘法 Description     那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她们并不是经验十足,她们的加密方法非常简单:第i只奶牛掌握着密码的第i个数字,起始的时候是Ci(0≤Ci<90000000).加密的时候,第i只奶牛会计算其他所有奶牛的数字和,并将这个数字和除以98765431取余.在所有奶牛计算完毕之后,每一只奶牛会用自己算得的数字代替原有的数字.…
https://www.luogu.org/problemnew/show/P1962(题目传送) n的范围很大,显然用普通O(N)的递推求F(n)铁定超时了.这里介绍一种用矩阵快速幂实现的解法: 首先普及一下矩阵乘法: 一个m*q的m行q列的矩阵A*一个q*n的q行n列的矩阵B得到一个m*n的m行n列的矩阵AB,则有: 通俗的讲,就是新矩阵第i行j列的数等于第一个矩阵第i行的q个数分别乘第二个矩阵的第j列的q个数并把它们加起来的和.注意,矩阵乘法满足结合律和分配律,但不满足交换律. 我们可以把…
算法训练 矩阵乘方   时间限制:1.0s   内存限制:512.0MB 问题描述 给定一个矩阵A,一个非负整数b和一个正整数m,求A的b次方除m的余数. 其中一个nxn的矩阵除m的余数得到的仍是一个nxn的矩阵,这个矩阵的每一个元素是原矩阵对应位置上的数除m的余数. 要计算这个问题,可以将A连乘b次,每次都对m求余,但这种方法特别慢,当b较大时无法使用.下面给出一种较快的算法(用A^b表示A的b次方): 若b=0,则A^b%m=I%m.其中I表示单位矩阵. 若b为偶数,则A^b%m=(A^(b…
题目描述 给定矩阵A,B和模数p,求最小的x满足 A^x = B (mod p) 输入 第一行两个整数n和p,表示矩阵的阶和模数,接下来一个n * n的矩阵A.接下来一个n * n的矩阵B 输出 输出一个正整数,表示最小的可能的x,数据保证在p内有解 样例输入 2 7 1 1 1 0 5 3 3 2 样例输出 4 题解 矩阵乘法+Hash+BSGS 看到题目很容易想到BSGS算法,但要求逆元,而矩阵的逆不是很好求出,怎么办? 事实上,BSGS有两种形式:$a^{km+t}\equiv(mod\…