时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给定一个
的矩阵
,我们想知道这个知道矩阵是否能表示成对称阵和反对称阵的和。如果能表示,请输出对称阵与反对称阵。可以证明,如果所求的两个矩阵存在,则这两个矩阵唯一。题目数据保证如果所求的两个矩阵存在,则对称阵与反对称阵内的元素必然为整数。
以下是一些名词的定义以及解释。
对称阵
定义:如果一个矩阵的转置等于自身,即

,那么这个矩阵就是对称矩阵。
- 数学表示:对于任意的

和

,有

。
- 简单理解:对称阵关于主对角线对称。
例子:
在这个矩阵中,

,

,所以它是对称阵。
反对称阵
定义: 如果一个矩阵的转置等于它的负矩阵,即

,那么这个矩阵就是反对称矩阵。
- 数学表示: 对于任意的

和

,有

,并且所有对角线上的元素都为

,即

。
- 简单理解:反对称阵关于主对角线反号对称。
例子:
在这个矩阵中,

,

,并且主对角线元素

,所以它是反对称阵。
矩阵加法
设有两个矩阵

和

,它们的大小都是

,即每个矩阵都有

行和

列。矩阵加法的规则是将对应位置的元素相加,得到一个新的矩阵

,其中:
输入描述:
第一行给出一个整数
,表示矩阵的大小。
接下来有
行,每行给出
个整数。其中第
行第
列为
,即矩阵的第
行第
列的值。
输出描述:
如果所求的对称阵与反对称阵存在,第一行输出 YES,否则输出 NO。
如果存在,则接下来输出
行,每行
个整数,其中第
行输出要求的对称阵,第
行输出要求的反对称阵。