Submission #1245285

#TimeUsernameProblemLanguageResultExecution timeMemory
1245285boyan2010Rack (eJOI19_rack)C++20
100 / 100
97 ms408 KiB
#include<bits/stdc++.h>
using namespace std;
long long n,k;
const long long mod=1e9+7;
long long f(long long k)
{
    if(k==0)
    {
        return 0;
    }
    long long pow=0,prod=1;
    while(prod<=k)
    {
        prod*=2;
        pow++;
    }
    prod/=2;
    pow--;
    long long one=1;
    for(int i=1;i<n-pow;i++)
    {
        one*=2;
        one%=mod;
    }
    return (f(k-prod)+one)%mod;
}
int main()
{
    cin>>n>>k;
    if(k==1)
    {
        cout<<1;
        return 0;
    }
    k--;
    cout<<(f(k)+1)%mod;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...