题解
每行有 a 个,所以总共有 \(n\cdot a\) 个
每列有 b 个,所以总共有 \(m\cdot b\) 个
所以要满足 \(na=mb\)
想象一下这个场景:每一行,每次往当前列中,最左端的一最少的列的开始连续放置1
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
void solve()
{
int n,m,a,b;
cin>>n>>m>>a>>b;
if(n*a!=m*b)
{
cout<<"no\n";
return;
}
cout<<"yes\n";
int start=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(j>=start&&j<=start+a-1||j<start&&start+a-1>=j+m) cout<<1;
else cout<<0;
}
start=(start+a-1)%m+1;
cout<<'\n';
}
}
int main()
{
//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
标签:总共,Matrix,cdot,long,solve,cout
From: https://www.cnblogs.com/pure4knowledge/p/18312886