Submission #1006374

#TimeUsernameProblemLanguageResultExecution timeMemory
1006374JoksimKaktusRack (eJOI19_rack)C++17
100 / 100
4 ms460 KiB
#include <bits/stdc++.h>
 
using namespace std;
using ll = long long;
 
int MOD = 1e9 + 7;
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(0);
    ll n,k;
    cin >> n >> k;
    ll add = 1;
    for(int i = 0;i < n;i++){
        add *= 2;
        add %= MOD;
    }
    ll r = 1;
    ll add2 = add;
    while(r < k){
        r *= 2;
        if(add2 % 2 == 1){
            add2 += MOD;
        }
        add2/=2;
    }
    ll res = 1;
    while(r > 1){
        if(k > r/2){
            res += add2;
            k -= r/2;
            res %= MOD;
        }
        add2 *= 2;
        add2 %= MOD;
        r/=2;
    }
    cout << res << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...