构造题。
首先,有一点很重要,构造的矩阵的两边必须小于 $100$。
所以说,我们可以先考虑构造一个上面一半白色下面一半黑色的矩形(这里直接给他弄 $100\times100$,无所谓)。
然后,如果我们白色少了,那我们就在黑色区域上放上白色的,如果黑色的少了,那么就在白色区域上方(这里放的方法随便怎么样都可以,只要你放的那几个之间不能联通就可以了)。
最简单的一种构造,就是直接在所有第一行到第五十行之间的行数是偶数,列数也是偶数的地方给他换一种颜色,后面那一半的也一样。
代码:
```cpp
// LUOGU_RID: 177226354
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
char a[N][N];
int main(){
int x,y;
cin >> x >> y;
x -- ,y -- ;
for (int i = 1; i <= 50 ; i++ ){
for (int j =1; j <= 100; j ++) {
a[i][j] = '.';
}
}
for (int i = 51; i <= 100 ; i++ ){
for (int j =1; j <= 100; j ++) {
a[i][j] = '#';
}
}
int dx = 2,dy = 2;
while (y -- ){
dy += 2;
a[dx][dy] = '#';
if (dy == 100){
dx += 2,dy = 2;
}
}
dx = 52,dy = 2;
while (x -- ){
dy += 2;
a[dx][dy] = '.';
if (dy == 100){
dx += 2,dy = 2;
}
}
cout << 100 << " " << 100 << endl;
for (int i = 1; i <= 100; i ++ ){
for (int j = 1;j <= 100; j ++){
cout << a[i][j];
}
cout << endl;
}
return 0;
}
```