题意:Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak.
n (n ≤ 30), k (k ≤ 109) and m (m < 104)
输出结果矩阵
解法:
若 n是偶数
Sn= a+...+an/2 + an/2+1
+ an/2+2 +...+ an/2+n/2
=(a+...+an/2) + an/2(a+...+an/2)
=Sn/2+ an/2Sn/2
=(1+an/2)Sn/2等比数列二分求和取模
2) 若n是奇数
Sn= a+...+a(n-1)/2 + a(n-1)/2+1
+...
+ a(n-1)/2+(n-1)/2 + a(n-1)/2+(n-1)/2 + 1
=S(n-1)/2
+ a(n-1)/2(a+...+a(n-1)/2)+an
=(1+a(n-1)/2)S(n-1)/2+an
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include ;
#include
解法二:等比矩阵
|A E|
|0 E|
|A , E| |A^n , 1+A^1+A^2+....+A^(n-1)|
|0 , E| 的n次方等于 |0 , 1 |
构造一个大矩阵,进行快速幂后,输出右上角矩阵。
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include ;
#include