Submission #509713

#TimeUsernameProblemLanguageResultExecution timeMemory
509713tudorRack (eJOI19_rack)C++17
100 / 100
6 ms4044 KiB
#include <iostream>
using namespace std;
const int mod = 1e9 + 7;
const int nmax = 1e6;
int p2[nmax + 1];
void precalc ( int n ) {
    p2[0] = 1;
    for ( int i = 1; i <= n; i++ ) {
        p2[i] = p2[i - 1] + p2[i - 1];
        if ( p2[i] >= mod )
            p2[i] -= mod;
    }
}
int main () {
    int n;
    long long k, rez = 1;
    cin >> n >> k;
    k--;
    precalc ( n );
    for ( int i = 1; i <= n; i++ ) {
        if ( k % 2 ) {
            rez = rez + p2[n - i];
            if ( rez >= mod )
                rez -= mod;
        }
        k /= 2;
    }
    cout << rez;
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...