Submission

Status:
PPPxxxxxxx

Score: 30

User: Jibhong

Problemset: Medulla

Language: cpp

Time: 2.342 second

Submitted On: 2024-12-13 19:13:21

#include <bits/stdc++.h>
using namespace std;

#define ll long long

map <int,ll> mem;
int visited[20020];

int main(){

    ios::sync_with_stdio(0);
    cin.tie(0);

    mem[0]=0;
    mem[1]=1;
    mem[2]=8;

    visited[0]=0;
    visited[1]=1;
    visited[2]=8;

    int n;
    int last=3;
    cin>>n;
    while(n--){
        int inp;
        cin>>inp;
        for(int i=last;i<=inp;++i){
            if(mem.find(i)!=mem.end()&&visited[mem[i]]){
                mem[i]=visited[mem[i]];
            }else{
                mem[i]=((mem[i-3]*mem[i-3]*mem[i-3])%20011+(mem[i-2]*mem[i-1])%20011)%20011;
                visited[mem[i]]=mem[i];
            }
        }
        last=max(last,inp);
        cout<<mem[inp]<<"\n";
    }
    return 0;
}