Submission #833619

#TimeUsernameProblemLanguageResultExecution timeMemory
833619tolbiRack (eJOI19_rack)C++17
40 / 100
1 ms340 KiB
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7;
#define tol(bi) (1LL<<((int)(bi)))
int solve(int n, long long k){
	if (n<=64 && k>tol(n-1)){
		return ((long long)solve(n-1,k-tol(n-1))*2ll)%MOD;
	}
	else {
		if (k==1){
			return 1ll;
		}
		if (k%2){
			return solve(n-1,k/2+1);
		}
		else {
			return (solve(n-1,k/2)+tol(n-1))%MOD;
		}
	}
}
int main(){
	long long n,k;
	cin>>n>>k;
	cout<<solve(n,k)<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...