求A+A^1+...+A^n

转换一下变成|A  E|,的n+1次方就是|A^(n+1)  A^n+...+A+E|

|0  E|                       |    0             E              |

最后结果减去E就行了,还有一点就是-1之后可能会变成负数,所以要+10再%10

  1. #include<map>
  2. #include<set>
  3. #include<cmath>
  4. #include<queue>
  5. #include<stack>
  6. #include<vector>
  7. #include<cstdio>
  8. #include<iomanip>
  9. #include<cstdlib>
  10. #include<cstring>
  11. #include<iostream>
  12. #include<algorithm>
  13. #define pi acos(-1)
  14. #define ll long long
  15. #define mod 10
  16. #define ls l,m,rt<<1
  17. #define rs m+1,r,rt<<1|1
  18. #pragma comment(linker, "/STACK:1024000000,1024000000")
  19.  
  20. using namespace std;
  21.  
  22. const double g=10.0,eps=1e-;
  23. const int N=+,maxn=<<+,inf=0x3f3f3f3f;
  24.  
  25. struct Node{
  26. ll row,col;
  27. ll a[N][N];
  28. };
  29. Node mul(Node x,Node y)
  30. {
  31. Node ans;
  32. ans.row=x.row,ans.col=y.col;
  33. memset(ans.a,,sizeof ans.a);
  34. for(ll i=;i<x.row;i++)
  35. for(ll j=;j<x.col;j++)
  36. for(ll k=;k<y.col;k++)
  37. ans.a[i][k]=(ans.a[i][k]+x.a[i][j]*y.a[j][k]+mod)%mod;
  38. return ans;
  39. }
  40. Node quick_mul(Node x,ll n)
  41. {
  42. Node ans;
  43. ans.row=x.row,ans.col=x.col;
  44. memset(ans.a,,sizeof ans.a);
  45. for(ll i=;i<ans.col;i++)ans.a[i][i]=;
  46. while(n){
  47. if(n&)ans=mul(ans,x);
  48. x=mul(x,x);
  49. n>>=;
  50. }
  51. return ans;
  52. }
  53. int main()
  54. {
  55.  
  56. ios::sync_with_stdio(false);
  57. cin.tie();
  58. // cout<<setiosflags(ios::fixed)<<setprecision(2);
  59. ll n,k;
  60. while(cin>>n>>k,n){
  61. Node A;
  62. A.row=*n,A.col=*n;
  63. memset(A.a,,sizeof A.a);
  64. for(ll i=;i<n;i++)
  65. for(ll j=;j<n;j++)
  66. cin>>A.a[i][j];
  67. for(ll i=;i<n;i++)
  68. {
  69. A.a[i][i+n]=;
  70. A.a[i+n][i+n]=;
  71. }
  72. /* for(ll i=0;i<A.row;i++)
  73. {
  74. for(ll j=0;j<A.col;j++)
  75. cout<<A.a[i][j]<<" ";
  76. cout<<endl;
  77. }*/
  78. A=quick_mul(A,k+);
  79. for(ll i=;i<n;i++)
  80. {
  81. for(ll j=;j<n;j++)
  82. {
  83. if(i==j)A.a[i][j+n]--;
  84. cout<<(A.a[i][j+n]+mod)%mod;
  85. if(j==n-)cout<<endl;
  86. else cout<<" ";
  87. }
  88. }
  89. cout<<endl;
  90. }
  91. return ;
  92. }

uva11149矩阵快速幂的更多相关文章

  1. UVA11149 矩阵快速幂

    首先我们来想一下计算A+A^2+A^3...+A^k. 如果A=2,k=6.那你怎么算 2+22+23+24+25+26 = ?= (2+22+23)*(1+23) 如果A=2,k=7.那你怎么算 2 ...

  2. Power of Matrix(uva11149+矩阵快速幂)

    Power of Matrix Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit St ...

  3. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  4. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  5. 51nod 1113 矩阵快速幂

    题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...

  6. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

  7. HDU5950(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...

  8. 51nod 1126 矩阵快速幂 水

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

  9. hdu2604(递推,矩阵快速幂)

    题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...

随机推荐

  1. Python默认调用路径

    记录个遇到的小问题,防止下次遇到忘记怎么解. 起因:pip安装扩展库时提示安装完成,但是在Python 终端下无法import 现象:终端直接运行python 时提示如下:(2.7.13)然而用/us ...

  2. HDU_2586_How far away ?

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. apt-get install 和 pip install的区别

    pip install apt-get install 源是pyPI 源是ubuntu仓库 对于同一个包,pyPI可以提供更多的版本以供下载 pip install安装的python包,可以只安装在当 ...

  4. Windows 10 升级软件 Windows 10 易升

    进入 https://www.microsoft.com/zh-cn/software-download/windows10 点立即更新,弹出如下下载地址. https://download.micr ...

  5. spring登录验证拦截器和根据用户角色登录

    大家都知道spring的用户登录拦截器,确实省去了程序员不少的精力,下面说说我在项目中使用的感受. 德安微信管理后台是管理多个微信帐号的平台,登录到平台的用户有三个角色,游客和微信帐号管理员.超级管理 ...

  6. tcp/udp/socket 端口映射,转发小工具

    1) 利用 Python 的 Socket 端口转发,用于远程维护 https://github.com/knownsec/rtcp 2) 反向端口转发工具 Reverse TCP Port to U ...

  7. ZW团队:IN_OUT传播模型简介

    传统媒体,网络媒体的整合推广,我曾经提出过一个:Tn-Out模式 In-Out是NBA的篮球术语,你自己百度下 传统媒体承担"IN"的角色,负责传播的深度和建立公信力 网络媒体充当 ...

  8. Java Exception 和Error有什么区别?

    ① Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型. ② Exception和Error ...

  9. JavaScript实现Map功能

    JavaScript中没有类似Java中的Map集合类的实现,自己做了简单实现,如下: function Map() { this.elements = new Array(); this.size= ...

  10. js正则表达式的使用详解

    本文转自:http://www.jb51.net/article/39623.htm 1定义正则表达式2关于验证的三个这则表达式方法3正则表达式式的转义字符 1定义正则表达式在js中定义正则表达式很简 ...