Description
给定四个正整数 \(n,m,a,b\),构造满足条件的 \(n \times m\) 矩阵:矩阵每行包含 \(a\) 个 \(1\),矩阵每列包含 \(b\) 个 \(1\),矩阵剩下的位置全为 \(0\)。
Solution
当且仅当 \(na=mb\) 时,可以构造出符合要求的矩阵。构造时我们只需要按行列分别循环即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005;
void solve()
{
int n,m,a,b;
cin>>n>>m>>a>>b;
vector<vector<int>> x(n+2,vector<int>(m+2));
if(n*a==m*b)
{
cout<<"YES"<<endl;
int pos=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=a;j++)
{
x[i][pos++]=1;
if(pos==m+1) pos=1;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<x[i][j];
}
cout<<endl;
}
}
else
{
cout<<"NO"<<endl;
}
}
signed main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
solve();
}
}