Description
已知一个 (n×m) 的矩阵,每行每列元素的异或和,请构造一个满足要求的矩阵。若不存在,输出"NO",否则输出"YES"和矩阵。
$ n,m leq 100 $
Solution
将前 ((n-1)(m-1)) 设为 (0),只通过最后一个 (L) 型来构造
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 105;
int n,m,a[N],b[N],s[N][N];
signed main() {
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>b[i];
for(int i=1;i<n;i++) s[i][m]=a[i];
for(int i=1;i<=m;i++) s[n][i]=b[i];
for(int i=1;i<n;i++) s[n][m]^=a[i];
int sum=0;
for(int i=1;i<=m;i++) sum^=s[n][i];
if(sum-a[n]) {
cout<<"NO";
}
else {
cout<<"YES"<<endl;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) cout<<s[i][j]<<" ";
cout<<endl;
}
}
}