Submission #894429

#TimeUsernameProblemLanguageResultExecution timeMemory
894429vjudge1Rack (eJOI19_rack)C++17
100 / 100
5 ms8080 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define pii pair<int, int>
#define ppb pop_back()

const int N = (int)1e5 + 5;
const ll mod = (int)1e9 + 7;
const ll inf = (int)(1e9) + 100;

ll binpow(ll a, ll n) {
    if (n == 0) return 1;
    if (n == 1) return a;
    int v = binpow(a, n / 2);
    if (n & 1) return (((v * v) % mod) * a) % mod;
    return (v * v) % mod;
}

ll add(ll a, ll b) {
    return ((a + b) % mod);
}

ll p[(int)1e6 + 5];

void solve() {
    ll n, k;
    cin >> n >> k;
    ll ans = 1;
    p[0] = 1;
    for (int i = 1; i <= n; i++) {
        p[i] = (p[i - 1] * 2) % mod;
    }
    ll l = n - 1;
    while (k > 1) {
        if (k & 1) {
            k = (k / 2) + 1;
        } else {
            k /= 2;
            ans = add(ans, p[l]);
        }
        l--;
    }
    cout << ans;
}

signed main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    int T = 1;
    //cin >> T;
    while (T--) solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...