题解:CF1950B Upscaling
更好的阅读体验
题目要求根据给定的整数 # 和 . 构成。
模拟即可,用一个 flag 表示当前应该使用 # 还是 .,使用两层循环来生成棋盘,每次循环是,先根据 flag 的值输出当前行的两个方块,然后翻转 flag 的值,以便下一行使用相反的符号。
每输出完一行,根据 flag 的值,使得下一行的开头与当前行的结尾相反即可,时间复杂度为
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
bool flag = true;
for (int i = 0; i < 2 * n; i += 2) {
for (int j = 0; j < 2 * n; j += 2) {
if (flag)
cout << "##";
else
cout << "..";
flag = !flag;
}
cout << endl;
if (n % 2)
flag = !flag;
for (int j = 0; j < 2 * n; j += 2) {
if (flag)
cout << "##";
else
cout << "..";
flag = !flag;
}
cout << endl;
if (n % 2 == 0)
flag = !flag;
}
}
return 0;
}