算法
(模拟)
只需按下图的样式铺瓷砖即可
对于第 $r$ 行第 $c$ 列的瓷砖,它是白色瓷砖当且仅当 $r+c$ 为偶数;类似地,它是黑色瓷砖当且仅当 $r + c$ 为奇数
另外,一块瓷砖由 $a \times b$ 的网格构成,还需对其中每个格子染色,而每个格子的颜色和它所对应的整块瓷砖的颜色是相同的
注意到对于第 $i$ 行第 $j$ 列的格子而言,它对应的瓷砖是 $(\lfloor \frac{i}{a} \rfloor, \lfloor \frac{j}{b} \rfloor)$
于是,我们只需判断 $\lfloor \frac{i}{a} \rfloor + \lfloor \frac{j}{b} \rfloor$ 的奇偶性即可
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::vector;
using std::string;
int main() {
int n, a, b;
cin >> n >> a >> b;
vector<string> s(n*a, string(n*b, '.'));
rep(i, n*a)rep(j, n*b) {
int r = i/a, c = j/b;
if ((r+c)%2 == 1) s[i][j] = '#';
}
rep(i, n*a) cout << s[i] << '\n';
return 0;
}