矩阵快速幂板子
struct Matrix { __int64 v[110][110]; Matrix() { memset(v, 0, sizeof(v)); } Matrix operator *(const Matrix B) // 重载的速度比写独立的函数慢点。 { int i, j, k; Matrix C; for(i = 0; i <= tot; i ++) for(j = 0; j <= tot; j ++) for(k = 0; k <= tot; k ++) { C.v[i][j] = (C.v[i][j] + v[i][k] * B.v[k][j]) % MOD; } return C; } };
Matrix mtPow(Matrix A, int k) // 用位运算代替递归求 A^k。 { int i; Matrix B; for(i = 0; i <= tot; i ++) { B.v[i][i] = 1; } while(k) { if(k & 1) B = B * A; A = A * A; k >>= 1; } return B; }
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。