一看是遞推的關係,明顯是矩陣乘法快速冪了。
這裡舉個例子,假設有3個選手,有n場比賽,得分記為si
如果有以下關係:
s1=s1+2s3;
s2=s2+1s1+1s3;
s3=s3+5s2;
則可以用以下的矩陣乘法表示
1 1 0
(s1 s2 s3)=(s1 s2 s3)×(0 1 5)^n
2 1 1
**寫的難看,如果錯誤,還請指正:
#include #include #include using namespace std;
int nn; //實際矩陣邊長
const int n=50; //乘矩陣邊長最大值
long long m; //要模的數
struct matrix
};matrix matrix_mul(matrix a,matrix b)
return ans;
}void work()
printf("%lld\n",ans);
}int main()
快速冪,矩陣乘法,矩陣快速冪
快速冪利用二進位制 複雜度 log級 include include include include using namespace std typedef long long ll typedef unsigned long long ull int q power int a,int b,int...
Tr A(矩陣乘法快速冪)
problem description a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。input 資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0...
dp 矩陣乘法快速冪
1 p1926 斐波那契 include include include using namespace std long long n const int mod 1000000007 long long nw 2 2 ans 2 2 long long t 2 2 void mul1 void ...