- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
矩阵快速幂
ACM矩阵快速幂 哈尔滨理工大学ACM集训队 矩阵乘法 快速幂 矩阵快速幂 矩阵乘法 矩阵乘法 矩阵乘法: 只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×n的矩阵a (m,n)左乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p),满足 矩阵乘法满足结合律,但不满足交换律 同大家线性代数中所学的矩阵乘法 矩阵乘法 矩阵乘法 矩阵运算律?: 结合律:(AB)C=A(BC) 分配律:(A+B)C=AC+BC C(A+B)=CA+CB? 若A为m×s矩阵,B为s×n矩阵,则AB为m×n矩阵? 而BA无法进行矩阵乘法运算;即便是方阵(n×n)交换后乘得的结果也不一定相同,除了相当特殊的,例如每个元素都是1的方阵 矩阵乘法 在计算机中,一个矩阵实际上就是一个二维数组。一个n行m列的矩阵与一个m行p列的矩阵可以相乘,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数为第一个矩阵第i行上的m个数与第二个矩阵第j列上的m个数对应相乘后所得的m个乘积之和。 矩阵乘法 hrbust1143 Input 输入数据第一行三个整数m,n,p,分别代表有两个矩阵A[M][N] B[N][P],接下来是A,B两个矩阵,M、N、P均小于100,矩阵中所有数据范围为[0, 1000],且均为整数。 Output 将矩阵输出,每两个数字之间只有一个空格。 Sample Input Sample Output 2 2 3 12 9 6 1 2 30 23 16 3 4 6 5 4 3 2 1 矩阵乘法 hrbust1143.cpp 快速幂 hrbust1140 数字和问题 Description 定义一种操作为:已知一个数字,对其各位数字 反复求和,直到剩下的数是一位数不能求和为止。 例如:数字2345,第一次求和得到2 + 3 + 4 + 5 = 14,再对14的各位数字求和得到1 + 4 = 5,得到5将不再求和。 现在请你求出对a^b进行该操作后,求最终得到的数字. Input 第一行,包含两个数字a(0 = a = 2000000000)和b(1 = b = 2000000000) Output 输出对a^b进行操作后得到的数字是什么 快速幂 a(0 = a = 2000000000) b(1 = b = 2000000000) 首先求a^b but~ a、b的范围太大?不能暴力循环! 怎么办? 快速幂 快速幂 只需计算log(b)次 还不超过40次!!!!即可解出 but问题又出现了! 不超时了,但是超范围了!! 2000000000^2000000000 用int、long long 、unsigned long long是装不下的! 快速幂 大数? NO! 数字和的公式(x+8)%9+1 即(a^b+8)%9+1 同余模定理(具体学习课下百度): (a+b)%mod=( a%mod + b%mod )%mod (a*b)%mod=( (a%mod) * (b%mod) )%mod 同样a+b+c+…与a*b*c*…一样满足 快速幂 即(a^b+8)%9+1 边计算边取模,整个过程只有乘法操作,不影响最终结果 int pow(int a,int k) //计算a^k,并最终结果对9取摸 { if(k==0) return 1; if(k==1) return a%9; if(k%2==0) return (g((a%9)*(a%9),k/2)%9); if(k%2==1) return (a%9)*(g((a%9),k-1)%9); } 快速幂 hrbust1140_递归快速幂.cpp hrbust1140_循环快速幂.cpp 矩阵快速幂 矩阵快速幂 计算前1000 000 000项斐波那契数,结果MOD 10007 f[0]=0; f[1]=1; …… f[n]=f[n-1]+f[n-2] 如果循环1000 000 000次一定会超时! 取模+超时----快速幂 but 公式怎么快速幂呢? 矩阵快速幂 f[0]=0; f[1]=1; …… f[n]=f[n-1]+f[n-2] [ ]* f[n-1] f[n] f[n] f[n+1] [ 0 1 1 1 ]= [ ] f[n] f[n-1]+f[n] f[n+1] f[n]+f[n+1] 矩阵快速幂 A=
原创力文档


文档评论(0)