AtCoder Beginner Contest 138
問題文
省略
省略
C++に変換後のコードはこちら
int L[64], R[64];
int vis[64][2][2][2];
mint dp[64][2][2][2];
mint solve(int dep, int u, int Lf, int Rf){
int n_u, n_Lf, n_Rf;
mint res;
if(dep < 0) return 1;
if(vis[dep][u][Lf][Rf]) return dp[dep][u][Lf][Rf];
vis[dep][u][Lf][Rf] = 1;
res = 0;
if(R[dep] == 1 || Rf == 1){
n_Lf = Lf;
if(L[dep] == 0) n_Lf = 1;
res += solve(dep-1, 1, n_Lf, Rf);
}
if(L[dep] == 0 || Lf == 1){
n_Rf = Rf;
if(R[dep] == 1) n_Rf = 1;
res += solve(dep-1, u, Lf, n_Rf);
}
if(u==1 && (R[dep]==1 || Rf==1) && (L[dep]==0 || Lf==1)){
res += solve(dep-1, 1, Lf, Rf);
}
return dp[dep][u][Lf][Rf] = res;
}
{
ll x;
mint res;
rd(x);
rep(i,64) L[i] = x%2, x /= 2;
rd(x);
rep(i,64) R[i] = x%2, x /= 2;
res = solve(63, 0, 0, 0);
wt(res);
}
Current time: 2024年03月30日00時55分22秒
Last modified: 2019年08月22日01時05分21秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Beginner_Contest ABC138 ABC_F
トップページに戻る
Logged in as: unknown user (not login)