Submission #1188525

#TimeUsernameProblemLanguageResultExecution timeMemory
1188525andrei_nRack (eJOI19_rack)C++20
40 / 100
1 ms528 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

int v[400000],s;
bitset<1000005> bit;

void multiply(int x)
{
    s += 5;
    int r = 0;
    for(int i=0; i<s; ++i)
    {
        v[i] = v[i] * x + r;
        r = v[i] / 10;
        v[i] %= 10;
    }
    while(s && !v[s-1]) --s;
}

void substract(int x)
{
    int r = 0;
    v[0] -= x;
    for(int i=0; i<s; ++i)
    {
        if(v[i] >= 0) break;
        v[i+1] -= (-v[i]+9) / 10;
        v[i] += (-v[i]+9) / 10 * 10;
    }
    while(s && !v[s-1]) --s;
}

signed main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int n,k; cin>>n>>k;
    --k;
    for(int i=n; i>=1; --i)
        if(i >= 64 || !(k & (1<<i-1)))
            bit[i] = 1;
    v[s++] = 1;
    for(int i=1; i<=n; ++i)
    {
        multiply(2);
        if(bit[i]) substract(1);
    }
    for(int i=s-1; i>=0; --i)
        cout<<v[i];
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...