제출 #1100005

#제출 시각아이디문제언어결과실행 시간메모리
1100005vjudge1Rack (eJOI19_rack)C++17
100 / 100
1 ms348 KiB
#include <iostream> #include <map> #include <unordered_map> #include <set> #include <vector> #include <queue> #include <algorithm> #include <cmath> #include <iomanip> using namespace std; #define ll long long #define PLL pair<ll, ll> #define PB push_back #define F first #define S second #define MP make_pair const ll INF = 999999999999999999; const ll M = 1000000000+7; ll binExp(ll a, ll b){ if(a==1){ return 1; } if(b==0){ return 1; } ll ans = 1; if(b%2==1){ ans = a; } return (binExp((a*a)%M,b/2)*ans)%M; } ll solve(ll n, ll k){ ll index = 1,npow = 1,tpow = 1, m = binExp(2,n),Inv = binExp(2,M-2); k--; //cout<<m<<" "<<Inv<<endl; for(ll i=0; i<=n; i++){ if(npow>k or npow<1){ break; } //cout<<(k&tpow)<<" "<<tpow<<endl; if((k&npow)!=0){ //cout<<(m/tpow)/2<<endl; index = (index + ((Inv*((m*tpow)%M))%M))%M; } //cout<<index<<endl; tpow = (tpow*Inv)%M; npow*=2; } return index; } int main(){ ll n,k; cin>>n>>k; cout<<solve(n,k); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...