Submission #1219726

#TimeUsernameProblemLanguageResultExecution timeMemory
1219726khomeRack (eJOI19_rack)C++20
100 / 100
0 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
int mod = 1000000007;

int binpow(int n, int k) {
    if (k == 0) return 1;
    if (k % 2) return n * binpow(n, k - 1) % mod;
    int x = binpow(n, k / 2);
    return x * x % mod;
}

signed main() {
    int n, k;
    cin >> n >> k;

    vector <int> a; a.push_back(0);

    int N = binpow(2, n);
   
    int k2 = (k + 1) / 2 - 1; int x = 1;
    for (int j = 60; j >= 0; j --) {
        if ((k2 & (1ll << j)) == 0) continue;
        
        int y = binpow(2, j + 2);
        x += N * binpow(y, mod - 2) % mod;
        x %= mod;
    }

    if (k % 2 == 1) cout << x << endl;
    else cout << (x + N * binpow(2, mod - 2) % mod) % mod << endl;
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...