一道好玩的构造题
Description
已知一个n×m的矩阵,每行每列元素的异或和,请构造一个满足要求的矩阵。若不存在,输出”NO”,否则输出”YES”和矩阵。
$$n, m \leq 100$$
Samples
Input #1
1 | 2 3 |
Output #1
1 | YES |
Input #2
1 | 3 3 |
Output #2
1 | NO |
Solution
一道需要脑洞开大的好玩构造题~
考虑异或的性质$a \text{ } \rm{xor} \text{ } 0 = a$, 即一个数异或0
之后的结果仍然是其本身.
那么我们把目标矩阵除了最后一列和最后一行, 都直接填上0
.
这样的后果是, 除了右下角的元素, 其它的元素直接填上对应行/列的异或和即可.
右下角的元素可以通过异或的另一个性质$a \text{ } \rm{xor} \text{ } b = c \implies b = c \text{ } \rm{xor} \text{ } a$推出来.
Code
1 | /* Headers */ |