【异或运算】codeforces 1153 B. Dima and a Bad XOR
1.【慢速加实现64位乘法】AcWing90 64位整数乘法2.【位运算】codeforces 1775 C. Interesting Sequence
3.【异或运算】codeforces 1153 B. Dima and a Bad XOR
前言
异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为
异或运算的规则
XOR = XOR = XOR = XOR =
特性
- 自反性:任何数与自身进行异或运算的结果均为
- 零和性:任何数与
进行异或运算都是其本身 - 交换律:异或运算符合交换律,即
XOR = XOR - 结合律:异或运算符合结合律,即 (
XOR ) XOR = XOR ( XOR )
题意
https://codeforces.com/problemset/problem/1151/B
输入两个正整数
若你能在每一行找出一个数,并且使得这些数异或的结果严格大于
题解
要使得
根据异或运算的特性,易知同一个二进制位上
参考代码
#include<bits/stdc++.h> #define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); using namespace std; constexpr int N = 507; int n, m; int a[N][N]; vector<int> zero[N][10], one[N][10]; int main() { IOS cin >> n >> m; for (int i = 1; i <= n; ++ i) for (int j = 1; j <= m; ++ j) cin >> a[i][j]; //只要让某一位的异或不为0,结果就必定不为0 for (int i = 0; i < 10; ++ i) { int p = 0, q = 0; for (int j = 1; j <= n; ++ j) { for (int k = 1; k <= m; ++ k) { if (a[j][k] >> i & 1) one[j][i].emplace_back(k); else zero[j][i].emplace_back(k); } if (one[j][i].size() == 0) p ++; else if (one[j][i].size() == m) q ++; } int r = n - p - q; if ((q & 1) || r > 0) { cout << "TAK\n"; bool flag = q & 1 ? false : true; for (int j = 1; j <= n; ++ j) { int sz = one[j][i].size(); if (sz == 0 || sz == m) cout << "1 "; else if (flag) { cout << one[j][i].front() << ' '; flag = false; } else cout << zero[j][i].front() << ' '; } return 0; } } cout << "NIE\n"; return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee