#include <bits/stdc++.h>
using namespace std;
#define el '\n'
#define ll long long
#define ld long double
#define ull unsigned long long
#define pll pair<long long, long long>
#define ppll pair< pair<long long, long long>, long long >
#define ff first
#define ss second
#define pb push_back
#define pf push_front
#define all(x) x.begin(), x.end()
const ll DIM = 2e5 + 7;
const ll INF = 1e16;
const ll mod = 1e9 + 7;
const ll maxlog = 20;
ll binpow (ll a, ll b) {
ll res = 1;
while (b) {
if (b & 1) {
res *= a;
res %= mod;
b--;
}
else {
a *= a;
a %= mod;
b /= 2;
}
}
return res;
}
void solve() {
ll n, k;
cin >> n >> k;
ll kk = k-1, st = 1, ans = 1;
while (kk > 0) {
if (kk % 2) {
ans += binpow(2, (n-st));
//ans += (1 << (n-st));
ans %= mod;
}
kk /= 2;
st++;
}
cout << ans << el;
}
signed main(){
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
//freopen("nocross.in", "r", stdin);
//freopen("nocross.out", "w", stdout);
int ntest = 1;
//cin >> ntest;
while (ntest--){
solve();
}
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... |