제출 #637357

#제출 시각아이디문제언어결과실행 시간메모리
637357VitaliyFSRack (eJOI19_rack)C++17
100 / 100
2 ms212 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...