C++之路进阶??矩阵乘法(Xn数列)
作者:网络转载 发布时间:[ 2016/2/18 15:39:49 ] 推荐标签:.NET 测试开发技术
1281 Xn数列
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 大师 Master
题目描述 Description
给你6个数,m, a, c, x0, n, g
Xn+1 = ( aXn + c ) mod m,求Xn
m, a, c, x0, n, g<=10^18
输入描述 Input Description
一行六个数 m, a, c, x0, n, g
输出描述 Output Description
输出一个数 Xn mod g
样例输入 Sample Input
11 8 7 1 5 3
样例输出 Sample Output
2
数据范围及提示 Data Size & Hint
int64按位相乘可以不要用高精度。
题解:
1.俄罗斯农夫算法。
2.矩阵 {(a,0)(1,1)},{Xn,c}
3.要用快速幂。
代码:
1 #include<cstdio> 2 #include<iostream> 3 #define ll long long 4 5 using namespace std; 6 7 long long m,a,c,x0,n,g; 8 long long x[2][2],b[2][2],f[1][2]; 9 10 long long mull(long long a,long long b,long long m) 11 { 12 long long ans=0; 13 while (b) 14 { 15 if (b&1) ans=(a+ans)%m; 16 b>>=1; 17 a=(a<<1)%m; 18 } 19 return ans; 20 } 21 22 int mull1 (long long a[2][2],long long b[2][2],long long ans[2][2]) 23 { 24 long long c[2][2]; 25 for (int i=0;i<2;i++) 26 for (int j=0;j<2;j++) 27 { 28 c[i][j]=0; 29 for (int k=0;k<2;k++) 30 c[i][j]=(c[i][j]+mull(a[i][k],b[k][j],m))%m; 31 } 32 for (int i=0;i<2;i++) 33 for (int j=0;j<2;j++) 34 ans[i][j]=c[i][j]; 35 } 36 37 int mull2 (long long a[1][2],long long b[2][2],long long ans[1][2]) 38 { 39 long long c[1][2]; 40 for (int i=0;i<1;i++) 41 for (int j=0;j<2;j++) 42 { 43 c[i][j]=0; 44 for (int k=0;k<2;k++) 45 c[i][j]=(c[i][j]+mull(a[i][k],b[k][j],m))%m; 46 } 47 for (int i=0;i<2;i++) 48 ans[0][i]=c[0][i]; 49 } 50 51 int main() 52 { 53 scanf("%lld%lld%lld%lld%lld%lld",&m,&a,&c,&x0,&n,&g); 54 x[0][0]=a; 55 x[1][0]=x[1][1]=1; 56 b[0][0]=b[1][1]=1; 57 f[0][0]=x0;f[0][1]=c; 58 while (n) 59 { 60 if (n&1) mull1(x,b,b); 61 mull1(x,x,x); 62 n>>=1; 63 } 64 mull2(f,b,f); 65 printf("%lld ",f[0][0]%g); 66 return 0; 67 }
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南