Submission #1352594

#TimeUsernameProblemLanguageResultExecution timeMemory
1352594opeleklanosRack (eJOI19_rack)C++20
100 / 100
0 ms344 KiB
#include <iostream>
using namespace std;

#define ll long long
#define MOD 1000000007

ll modPow(ll p){
    ll res = 1;
    ll a = 2;
    while(p>0){
        if(p & 1){
            res = (res * a)%MOD;
        }
        a = (a*a)%MOD;
        p = p/2;
    }
    return res;
}

int main(void){
    // freopen("input.txt", "r", stdin);
    ll n, k;
    cin>>n>>k;
    k--;
    
    ll ans = 0;

    for(ll i = 0; (ll)(((ll)1)<<i) <= k; i++){
        if((k) & (ll)(((ll)1)<<i)){
            ll pow2 = modPow(n-i - 1);
            ans = (ans + pow2) % MOD;
        }
    }

    cout<<(ans+1) %MOD<<endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...