Submission #833638

#TimeUsernameProblemLanguageResultExecution timeMemory
833638tolbiRack (eJOI19_rack)C++17
100 / 100
3 ms276 KiB
#include <bits/stdc++.h> using namespace std; const int MOD = 1e9+7; #define tol(bi) (1LL<<((int)(bi))) int fpow(int base, int pow){ int rval = 1; while (pow){ if (pow&1){ rval=(((long long)rval*base)%MOD); } base=(((long long)base*base)%MOD); pow>>=1; } return rval; } int solve(int n, long long k){ if (n<=64 && k>tol(n-1)){ return ((long long)solve(n-1,k-tol(n-1))*2ll)%MOD; } else { if (k==1){ return 1ll; } if (k%2){ return solve(n-1,k/2+1); } else { return ((long long)solve(n-1,k/2)+fpow(2,n-1))%MOD; } } } int main(){ long long n,k; cin>>n>>k; cout<<solve(n,k)<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...