#include <bits/stdc++.h>
using namespace std;
int n;
const int mod = 1e9 + 7;
long long k;
int arr[1000001];
int main(){
cin >> n >> k;//n <= 1e6, k <= 1e18
arr[0] = 1;
for (int i = 1; i <= n; i++){
arr[i] = (arr[i - 1] * 2) % mod;//n
}
int ans = 0;
while (k > 1){
int p = log2(k);
if (arr[p] == k){
p--;
}
ans = (ans + arr[n - p - 1]) % mod;
k -= arr[p];
}
cout << ans + 1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |