Submission #833638

# Submission time Handle Problem Language Result Execution time Memory
833638 2023-08-22T07:19:15 Z tolbi Rack (eJOI19_rack) C++17
100 / 100
3 ms 276 KB
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7;
#define tol(bi) (1LL<<((int)(bi)))
int fpow(int base, int pow){
	int rval = 1;
	while (pow){
		if (pow&1){
			rval=(((long long)rval*base)%MOD);
		}
		base=(((long long)base*base)%MOD);
		pow>>=1;
	}
	return rval;
}
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 ((long long)solve(n-1,k/2)+fpow(2,n-1))%MOD;
		}
	}
}
int main(){
	long long n,k;
	cin>>n>>k;
	cout<<solve(n,k)<<endl;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 3 ms 276 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 3 ms 276 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct