codeforces1151B Dima(异或的性质)

简介: codeforces1151B题解(异或的性质)

输入n行,m列。从每一行取一个值,使他们的异或和>0,输出TAK和n个满足条件的每一行的列数,如果不能构成,输出NIE。

/*
 * codeforces1151B Dima and a Bad XOR 
 * Created by hao on 2019/4/19.
 * 输入n行,m列。从每一行取一个值,使他们的异或和>0。
 * 输出TAK和n个满足条件的每一行的列数,如果不能构成,输出NIE。
 * 异或的一些性质
 * 0^0=0,0^1=1,1^0=1,1^1=0
 * 相同取0,相异取1
 * 输入A取0,则输出p=输入B
 * 输入A取1,则输出p=输入B的反
 */
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;
#define ll long long

int main() {
    cin.tie(0);
    ios_base::sync_with_stdio(false);
    int h, w;
    cin >> h >> w;
    int a[505][505];
    int cur = 0;

    //读入数据,cur对每一行第一个异或(^)
    for (int i = 0; i < h; ++i) {
        for (int j = 0; j < w; ++j) {
            cin >> a[i][j];
        }
        cur ^= a[i][0];
    }
    //定义初始值,去判断是否有符合条件的存在。
    int px = -1, py = -1;
    for (int i = 0; i < h && px == -1; ++i) {
        for (int j = 0; j < w; ++j) {
            //让当前值和每一行的第一个进行异或,如果满足和>0即可跳出,记录行数和列数,方便输出
            int nxt = cur ^ a[i][0] ^ a[i][j];
            if (nxt > 0) {
                px = i, py = j+1;
                break;
            }
        }
    }
    //根据前面的判断分情况输出
    if (px >= 0 && py >= 0) {
        cout << "TAK" << endl;
        for (int i = 0; i < h; ++i) {
            if (i) cout << ' ';
            cout << (i == px ? py : 1);
        }
        cout << endl;
    }
    else {
        cout << "NIE" << endl;
    }
    return 0;
}
AI 代码解读
目录
打赏
0
0
0
0
1
分享
相关文章
[Codeforces] 1557 C Moamen and XOR(组合数学)
题意: 用 < 2k的数填充到长度为n的数组中,要使得数组中所有数& >= ^,问方案数 显然,当k == 1的时候,答案为1,只有当所有的数全为1的情况才可以满足题意 对于其他的情况{ 用小于2k的数进行填充,那么说明填充的数字的二进制位数最多可以有k kk位, 从数的个数的角度来说,奇数个1^ 之后的结果是1,偶数个1^ 之后的结果是0,而对于0来讲,不管多少个0,^起来结果都是0 只要有一个0,那么说这一位上&之后就是0,而为了让^为0,那么只能够选择偶数个1 如果某一位上&为1,那么^为1的情况需要讨论n的奇偶性
137 0
数论整理之算数基本定理
数论整理之算数基本定理
103 0
[解题报告]《算法零基础100讲》(第9讲) 算术基本定理
[解题报告]《算法零基础100讲》(第9讲) 算术基本定理
[解题报告]《算法零基础100讲》(第9讲) 算术基本定理
算法基础系列第四章——数论之质数与约数(2)
算法基础系列第四章——数论之质数与约数(2)
159 0
算法基础系列第四章——数论之质数与约数(2)
数学知识:质数(一)
复习acwing算法基础课的内容,本篇为讲解数学知识:质数,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
168 0
数学知识:质数(一)
埃式质数筛及性质
【10月更文挑战第8天】本文介绍质数,或素数,指大于1且仅能被1和自身整除的自然数。它们在数学中有独特地位,如算术基本定理指出任何大于1的自然数可唯一分解为质数乘积。质数的寻找方法多样,包括试除法、埃拉托斯特尼筛法等,后者通过筛除合数高效找出质数。质数在密码学中尤为重要,如RSA加密算法依赖大质数的乘积安全性。此外,还有多种算法和理论,如欧拉筛法、费马小定理、梅森质数等,丰富了质数的研究领域。
121 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等