#include <bits/stdc++.h>
using namespace std;
#define int long long
int mod = 1000000007;
int binpow(int n, int k) {
if (k == 0) return 1;
if (k % 2) return n * binpow(n, k - 1) % mod;
int x = binpow(n, k / 2);
return x * x % mod;
}
signed main() {
int n, k;
cin >> n >> k;
vector <int> a; a.push_back(0);
int N = binpow(2, n);
/*
0 -> 1 2
1 -> 3 4
2 -> 5 6
3 -> 7 8
4 -> 9 10
5 -> 11 12
*/
int k2 = (k + 1) / 2 - 1; int x = 1;
for (int j = 60; j >= 0; j --) {
if (k2 & (1 << j)) {
// cout << j << endl;
int y = binpow(2, j + 2);
// x += N / y;
x += N * binpow(y, mod - 2) % mod;
x %= mod;
}
}
if (k % 2 == 1) {
cout << x << endl;
} else {
cout << (x + N * binpow(2, mod - 2) % mod) % mod << endl;
}
// for (int i = 1; i < a.size(); i ++) cout << a[i] << ' ';
//cout << a[k] << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |