Submission #1179879

#TimeUsernameProblemLanguageResultExecution timeMemory
1179879zadniprovskaRack (eJOI19_rack)C++20
100 / 100
0 ms396 KiB
#include <bits/stdc++.h>

using namespace std;

#define el '\n'
#define ll long long
#define ld long double
#define ull unsigned long long
#define pll pair<long long, long long>
#define ppll pair< pair<long long, long long>, long long >
#define ff first
#define ss second
#define pb push_back
#define pf push_front
#define all(x) x.begin(), x.end()

const ll DIM = 2e5 + 7;
const ll INF = 1e16;
const ll mod = 1e9 + 7;
const ll maxlog = 20;

ll binpow (ll a, ll b) {

    ll res = 1;
    while (b) {
        if (b & 1) {
           res *= a;
           res %= mod;

           b--;
        }
        else {
            a *= a;
            a %= mod;

            b /= 2;
        }


    }

    return res;

}

void solve() {

    ll n, k;
    cin >> n >> k;


    ll kk = k-1, st = 1, ans = 1;
    while (kk > 0) {

        if (kk % 2) {

            ans += binpow(2, (n-st));
            //ans += (1 << (n-st));

            ans %= mod;
        }

        kk /= 2;
        st++;
    }

    cout << ans << el;







}



signed main(){
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    //freopen("nocross.in", "r", stdin);
    //freopen("nocross.out", "w", stdout);

    int ntest = 1;
    //cin >> ntest;
    while (ntest--){
        solve();
    }
    return 0;

}
;
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...