AtCoder Regular Contest 066/AtCoder Beginner Contest 050 D問題 - Xor Sum

Source

AtCoder Regular Contest 066
AtCoder Beginner Contest 050
問題文 (ARC)
問題文 (ABC)

問題概要

省略

解法

省略

cLayversion 20190925-1)のコード

C++に変換後のコードはこちら

ll N;
char in[64], vis[2][2][64];
mint dp[2][2][64];

mint solve(int p, int k, int d){
  mint res = 0;

  if(d==-1) return 1;
  if(vis[p][k][d]) return dp[p][k][d];
  vis[p][k][d] = 1;

  res += solve(if[in[d], 0, p], 0, d-1);
  if(k==0 && (p==0 || in[d]==1)) res += solve(p, 0, d-1);
  if(d!=0 && (p==0 || in[d]==1)) res += solve(p, 1, d-1);
  if(k==1 && d!=0) res += solve(if[in[d], 0, p], 1, d-1);

  return dp[p][k][d] = res;
}

{
  rd(N);
  rep(i,64) in[i] = N % 2, N /= 2;
  wt(solve(1,0,63));
}

Current time: 2024年03月29日10時40分26秒
Last modified: 2019年09月28日09時44分57秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Regular_Contest AtCoder_Beginner_Contest ARC066 ABC050 ARC_B ABC_D
トップページに戻る

Logged in as: unknown user (not login)

ログイン: