# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
581109 | masmc05 | Rack (eJOI19_rack) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#define int long long
using namespace std;
const long long mod=1e9+7;
long long int logExp(long long int num, long long e){
if (e == 1) return num;
if (e == 0) return 1;
long long int fin = logExp(num, e >> 1) % mod;
fin = (fin * fin) % mod;
if (e & 1) fin = (fin * num) % mod;
return fin;
}
int32_t main()
{
long long n, k;
cin >> n >> k;
long long res = 0;
k--;
for (long long i = n - 1; i >= 0; i--) {
int child = k & 1;
k = k >> 1;
if (child == 1) res = (res + logExp(2, i) % mod ) % mod;
}
cout << (res + 1) % mod;
return 0;
}