Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
138122 | why | 二进制计数游戏 | C++ | 解答错误 | 0 | 0 MS | 244 KB | 826 | 2024-03-13 22:40:08 |
#include <iostream> #include <vector> using namespace std; long long countBinaryNumbers(int n, long long s, long long t) { vector<vector<long long>> dp(n + 1, vector<long long>(2, 0)); dp[0][0] = 1; for (int i = 1; i <= n; i++) { dp[i][0] = dp[i - 1][0] + dp[i - 1][1]; dp[i][1] = dp[i - 1][0]; } long long count = 0; for (int i = n; i >= 0; i--) { if ((s >> i) & 1) { count += dp[i][1]; if ((t >> i) & 1) { break; } } else if ((t >> i) & 1) { count += dp[i][0]; } } return count; } int main() { int n; long long s, t; cin >> n >> s >> t; long long result = countBinaryNumbers(n, s, t); cout << result << endl; return 0; }