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<bits/stdc++.h>
using namespace std;
#define fr first
#define sc second
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef long double ld;
const ll INF = 2000000000000000007, DIM = 1000007, DIM2 = 107, MAXN = 100007, MOD = 1000000007;
ll tt, mid, res,f, q, a[DIM], b[DIM], d[DIM], used[DIM],  dp[DIM], y, type, ptr, root, cnt, sum, pos, h, p, sx,sy, id, testcase, curans, nn, split, n, m, x, k1, k2, changecnt,k,l,r,v,u, l1,r1,l2,r2;
bool flag, flag2;
char c;
ll binpow(ll a, ll b){
	ll res = 1; ll mn = a;
	while(b) {
		if(b&1) res *= mn;
		res%=MOD;
		mn*=mn;
		mn%=MOD;
		b>>=1;
	}
	return res;
}
void solve() {
	cin>>n>>k;
	res=1;v=1;
	while(v!=n+1) {
		if(k%2==0){
			res+=binpow(2, n-v);
			res%=MOD;
		}
		k=k/2+k%2;
		++v;
	}
	cout<<res<<'\n';
}
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	tt=1;
	// freopen("input.txt","r",stdin);
	// freopen("output.txt","w",stdout);
	//cin>>tt;
	while(tt--) {
		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... |