#include #include #include #include #include #include #include #include #include #include using namespace std; //[n*p] * [p*m] => [n*m] template vector< vector > multmat(const vector > &A, const vector> &B, int n, int p, int m){ vector > C(n, vector(m,0)); for(int i=0; i vector< vector > mat_pow(vector > A, int k){ int n = A.size(); vector > ret(n, vector(n, 0) ); for(int i=0; i0){ if(k&1) ret = multmat(A,ret, n,n,n); A = multmat(A,A, n,n,n); k>>=1; } return ret; } //A[n*p]*b[p*m] = x[n*m] vector > gaussian_elimination(const vector > &A, vector > &x){ bool valid = true; int rank=0; int n = A.size(); int p = A[0].size(); vector< vector > R = A; for(int i=0; i=0; i--){ for(int j=i-1; j>=0; j--){ double c = R[j][i]; for(int k=i; k> &v){ #ifdef DBG_ for(auto l : v){ for(auto x : l){ cerr << x << "\t"; } cerr << endl; } cerr << endl; #endif } int main(){ int K; cin >> K; double p = 1.0/6.0; vector> P(K+1, vector(K+1, 0)); for(int i=0; i> E(K, vector(K, 0)); for(int i=0; i> M(K, vector(K, 0)); for(int i=0; i> g(K, vector(1,1)); //cerr << "g" << endl; print_vec(g); auto X = multmat(M,g, K,K,1); //cerr << "X" << endl; print_vec(X); cout << X[0][0] << endl; return 0; }