Submission #637515

#TimeUsernameProblemLanguageResultExecution timeMemory
637515ksu2009enRack (eJOI19_rack)C++17
100 / 100
9 ms7924 KiB
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
#include <cmath>
#include <iomanip>
#include <cstdio>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <bitset>
#include <cstring>

using namespace std;
typedef long long ll;

ll power[1000007];

int main(){
    ll n, k;
    cin >> n >> k;
    
    power[0] = 1;
    
    for(int i = 1; i <= n; i++)
        power[i] = (power[i - 1] * 2) % (ll)(1e9 + 7 );
    
    ll add = n-1;
    ll ans = 0, step = n-1;
    
    while(step > 0){
        if(k % 2 == 0){
            ans += power[add];
            ans %= (ll)(1e9 + 7);
        }
        
        k = (k + 1) / 2;
        step--;
        add--;
    }
    ans += k;
    
    cout << ans << endl;
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...