Submission
Status:
PPPxxxxxxx
Score: 30
User: Jibhong
Problemset: Medulla
Language: cpp
Time: 2.212 second
Submitted On: 2024-12-13 19:17:01
#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-1]]){
mem[i]=visited[mem[i-1]];
}else{
mem[i]=((mem[i-3]*mem[i-3]*mem[i-3])%20011+(mem[i-2]*mem[i-1])%20011)%20011;
visited[mem[i-1]]=mem[i];
}
}
last=max(last,inp);
cout<<mem[inp]<<"\n";
}
return 0;
}