Submission #1607273
Source Code Expand
#include <iostream> #include <algorithm> #include <vector> using namespace std; vector<vector<size_t>> mul(const vector<vector<size_t>> &T1, const vector<vector<size_t>> &T2){ int K = T1.size(); vector<vector<size_t>> T(K, vector<size_t>(K, 0)); for(int i=0; i<K; i++) for(int j=0; j<K; j++) for(int k=0; k<K; k++) T[i][j] ^= T1[i][k] & T2[k][j]; return T; } vector<vector<size_t>> bipow(const vector<vector<size_t>> &T, int m){ if(m == 1) return T; if(m % 2 == 0){ auto T2 = mul(T, T); return bipow(T2, m/2); } return mul(T, bipow(T, m-1)); } vector<size_t> vec(const vector<vector<size_t>> &T, const vector<size_t> x){ int K = x.size(); vector<size_t> y(K, 0); for(int i=0; i<K; i++) for(int j=0; j<K; j++) y[i] ^= T[i][j] & x[j]; return y; } int main(){ int K, M; cin >> K >> M; vector<size_t> A(K), C(K); for(int i=0; i<K; i++) cin >> A[i]; for(int i=0; i<K; i++) cin >> C[i]; if(M <= K){ cout << A[M-1] << endl; return 0; } reverse(A.begin(), A.end()); vector<vector<size_t>> T(K, vector<size_t>(K, 0)); for(int i=0; i<K; i++) T[0][i] = C[i]; for(int i=1; i<K; i++) T[i][i-1] = UINT_MAX;; auto T2 = bipow(T, M-K); auto x = vec(T2, A); cout << x[0] << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 漸化式 |
User | suzume |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1428 Byte |
Status | CE |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:48:40: error: ‘UINT_MAX’ was not declared in this scope for(int i=1; i<K; i++) T[i][i-1] = UINT_MAX;; ^