当前位置: 首页 > news >正文

CF2153B Bitwise Reversion | 数学 | 模拟

CF2153B Bitwise Reversion | 数学 | 模拟

题目描述

给定三个非负整数 \(x\)\(y\)\(z\),判断是否存在三个非负整数 \(a\)\(b\)\(c\),满足以下三个条件:

  • \(a \mathbin{\&} b = x\)
  • \(b \mathbin{\&} c = y\)
  • \(a \mathbin{\&} c = z\)

其中 \(\mathbin{\&}\) 表示按位与运算。

数据范围

输入包含多组测试数据。第一行包含一个整数 \(t\)\(1 \leq t \leq 10^4\)),表示测试数据的组数。

接下来每组测试数据占一行,每行包含三个整数 \(x\)\(y\)\(z\)\(0 \leq x, y, z \leq 10^9\)),分别表示 \(a \mathbin{\&} b\)\(b \mathbin{\&} c\)\(a \mathbin{\&} c\) 的目标值。

5
1 1 1
3 2 6
4 8 12
9 10 12
12730 3088 28130
YES
YES
NO
YES
NO

题解及证明过程

我们知道 \(x_i,y_i,z_i \in \left\{ 0,1\right\}\)\(a_i,b_i,c_i \in \left\{ 0,1\right\}\),为了找出满足 \(a \mathbin{\&} b = x\)\(b \mathbin{\&} c = y\)\(a \mathbin{\&} c = z\) 的数,我们尝试通过排列组合所有情况。

可知对于一组 \((a_i,b_i,c_i)\)\(8\) 种情况。排列组合后后算出对应的 \(x_i,y_i,z_i\) 的值即可。如下:

\(a_i\) \(b_i\) \(c_i\) \(x_i\) \(y_i\) \(z_i\)
\(0\) \(0\) \(0\) \(0\) \(0\) \(0\)
\(1\) \(0\) \(0\) \(0\) \(0\) \(0\)
\(0\) \(1\) \(0\) \(0\) \(0\) \(0\)
\(0\) \(0\) \(1\) \(0\) \(0\) \(0\)
\(1\) \(1\) \(0\) \(1\) \(0\) \(0\)
\(0\) \(1\) \(1\) \(0\) \(1\) \(0\)
\(1\) \(0\) \(1\) \(0\) \(0\) \(1\)
\({\color{Red} 1}\) \({\color{Red} 1}\) \({\color{Red} 1}\) \({\color{Red} 1}\) \({\color{Red} 1}\) \({\color{Red} 1}\)

由表可知,如果 \(x_i=1\)\(y_i=1\),则一定有 \(z_i=1\)。如果 \(x_i=1\)\(z_i=1\),则一定有 \(y_i=1\)。如果 \(y_i=1\)\(z_i=1\),则一定有 \(x_i=1\)

我们同样可以用本文中的要求来证明。根据 \(a \mathbin{\&} b = x\)\(b \mathbin{\&} c = y\)\(a \mathbin{\&} c = z\),所以当 \(x_i=1\)\(y_i=1\) 时,\(a_i=b_i=1\)\(b_i=c_i=1\),所以 \(a_i=c_i=1\),此时代入 \(a \mathbin{\&} c = z\),则 \(z_i=a_i \mathbin{\&} c_i =1\mathbin{\&} 1=1\),故定理成立。同理可证明其他两个结论。

因为 \(0 \leq x, y, z \leq 10^9\),所以我们直接遍历前 \(30\)(因为 \(\log_2 (10^9)\approx 30\))个二进制位。使用布尔形型变量检查其是否满足标准即可。注意数组下标从 \(0\) 开始。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T,x,y,z;
int main(){cin>>T;while(T--){cin>>x>>y>>z;bool f=1;for(int i=0;i<31;i++){ll x2=(x>>i)&1,y2=(y>>i)&1,z2=(z>>i)&1;if(x2&y2&&!z2){f=0; break;}if(x2&z2&&!y2){f=0; break;}if(y2&z2&&!x2){f=0; break;}}if(f) cout<<"Yes\n";else cout<<"No\n";}return 0;
}
http://www.jsqmd.com/news/28557/

相关文章:

  • DRL-QLearning与DQN
  • 2025 年 11 月真空耙式干燥机,高效沸腾干燥机,盘式干燥机厂家最新推荐,高性能,稳定性强的行业优选
  • 2025 年 11 月盘式干燥机,空心桨叶干燥机,振动流化床干燥机厂家最新推荐,技术实力与市场口碑深度解析
  • 2025 年 11 月双锥回转真空干燥机,离心喷雾干燥机,带式干燥机厂家最新推荐,专业制造与品牌保障口碑之选
  • DRL-时序差分学习
  • 再见了ThreadLocal,我决定用ScopedValue!
  • 查询增强插件pgfincore - 教程
  • 2025 年 11 月双锥回转真空干燥机,真空耙式干燥机,盘式干燥机厂家最新推荐,聚焦资质、案例、售后的六家机构深度解读
  • 2025 年 11 月高效沸腾干燥机,旋转闪蒸干燥机,空心桨叶干燥机厂家最新推荐,产能、专利、环保三维数据透视
  • 如何把未分配的硬盘空间分配到另一个磁盘?Windows 11,如何将未分配的磁盘分配给 C 盘?怎么把未分配的磁盘合并到d盘
  • LLM应用敏感数据防泄露指南:AI安全围栏筑牢企业自研AI应用安全防线
  • C++中`std::function`和`std::bind`的详细解析
  • k8s-应用部署和组件及常用命令(2)
  • 高级语言程序设计第3次作业
  • C++多线程相关应用
  • CSP-J 2025 复赛解析
  • 加速 Docker 镜像下载的神器:KSpeeder 上手体验
  • Java桌面应用开发:JavaFX模块化与响应式
  • MyBatis 动态标签
  • 用 CSS Grid 实现高效布局的 3 个实战技巧
  • 【Linux 高效的系统】文件系统与软硬件连接
  • Webpack技术深度解析:模块打包与性能优化
  • Pinely Round 5 (Div. 1 + Div. 2) A+B+C+D
  • Spring Web MVC入门 - 指南
  • CSS:现代Web设计的不同技术
  • 左手坐标系和右手坐标系
  • ubuntu24 主题体验经验
  • 图神经网络(GNN)
  • docker部署OpenResume 开源简历生成器
  • 深入解析:MySQL 配置管理与日志系统完全指南:从基础到高级优化