Submission #1352587

#TimeUsernameProblemLanguageResultExecution timeMemory
1352587opeleklanosRack (eJOI19_rack)C++20
40 / 100
1095 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; (1<<i) <= k; i++){
        if((k) & (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...