結果
問題 | No.939 and or |
ユーザー | 0w1 |
提出日時 | 2019-12-02 23:50:00 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 684 bytes |
コンパイル時間 | 2,159 ms |
コンパイル使用メモリ | 196,380 KB |
最終ジャッジ日時 | 2025-01-08 06:50:02 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 30 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); int A, B; cin >> A >> B; auto solve = [&]() { vector<vector<int>> dp(32, vector<int>(2)); dp[0][0] = 1; for (int i = 0; i + 1 < 32; ++i) { int a = A >> 30 - i & 1; int b = B >> 30 - i & 1; if (a && !b) return 0; for (int l = 0; l < 2; ++l) { if (a == b) dp[i + 1][l] += dp[i][l]; if (!a && b) { if (l) { dp[i + 1][l] += 2 * dp[i][l]; } else { dp[i + 1][1] += dp[i][l]; } } } } return dp[31][0] + dp[31][1]; }; cout << solve() << endl; return 0; }