CF486B OR in Matrix

题目描述

我们定义逻辑 $OR$ 为对两个逻辑值(即属于集合 $\{0,1\}$ 的值)的一种运算,当这两个逻辑值中有一个或两个等于 $1$ 时结果为 $1$,否则为 $0$。我们可以用同样的方式定义三个及以上逻辑值的逻辑 $OR$: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF486B/406211f13f2a7c95dc14e24b4ae950d102f218cc.png) 其中 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF486B/83308fae1dcded561005b623c7c1ed2fdfdfe04f.png) 等于 $1$ 当且仅当某个 $a_i=1$,否则为 $0$。 Nam 有一个 $m$ 行 $n$ 列的矩阵 $A$。行从 $1$ 到 $m$ 编号,列从 $1$ 到 $n$ 编号。第 $i$ 行第 $j$ 列的元素记做 $A_{ij}$。$A$ 的所有元素均为 $0$ 或 $1$。Nam 用如下公式从矩阵 $A$ 得到另一个同样大小的矩阵 $B$: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF486B/157692e348a7a47f249e1d0e7ed60b12dc8cb619.png) 也就是说,$B_{ij}$ 等于矩阵 $A$ 的第 $i$ 行和第 $j$ 列所有元素的逻辑 $OR$。 Nam 给出了矩阵 $B$,让你猜出原始的矩阵 $A$。不过,Nam 可能在计算 $B$ 的过程中犯了错误,因为 $A$ 可能很大。

输入格式

第一行包含两个整数 $m$ 和 $n$($1 \leq m, n \leq 100$),表示矩阵的行数和列数。 接下来 $m$ 行,每行包含 $n$ 个整数,以空格分隔,描述矩阵 $B$ 的每一行(每个元素为 $0$ 或 $1$)。

输出格式

输出第一行为 “NO”,如果 Nam 在计算 $B$ 的过程中有错误;否则输出第一行为 “YES”,并接着输出 $m$ 行 $n$ 个整数表示可以得到给定矩阵 $B$ 的矩阵 $A$(如果有多个解,输出任意一个解均可)。

说明/提示

由 ChatGPT 5 翻译