Submission #1607274


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <climits>
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 100
Code Size 1450 Byte
Status AC
Exec Time 48 ms
Memory 2816 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 20
Set Name Test Cases
All random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, sample_1.txt, sample_2.txt, sample_3.txt, small_1.txt, small_2.txt
Case Name Status Exec Time Memory
random_01.txt AC 1 ms 256 KB
random_02.txt AC 1 ms 256 KB
random_03.txt AC 1 ms 256 KB
random_04.txt AC 1 ms 256 KB
random_05.txt AC 1 ms 256 KB
random_06.txt AC 1 ms 256 KB
random_07.txt AC 3 ms 512 KB
random_08.txt AC 8 ms 896 KB
random_09.txt AC 47 ms 2688 KB
random_10.txt AC 48 ms 2816 KB
random_11.txt AC 48 ms 2816 KB
random_12.txt AC 48 ms 2816 KB
random_13.txt AC 48 ms 2816 KB
random_14.txt AC 48 ms 2816 KB
random_15.txt AC 45 ms 2688 KB
sample_1.txt AC 1 ms 256 KB
sample_2.txt AC 1 ms 256 KB
sample_3.txt AC 2 ms 512 KB
small_1.txt AC 1 ms 256 KB
small_2.txt AC 1 ms 256 KB