1 条题解
-
0
1950B - 升级 详细题解(标程版)
题意简述
给定 ,输出一个大小为 的图案。 图案由 块构成,黑白(
#/.)交替排列,左上角为#。
标程核心思路(最优解法)
直接观察 里的每一个位置 :
- 把坐标向下取整除以 2,得到缩小后的坐标:
- 如果这两个数的和是偶数 → 输出
# - 如果和是奇数 → 输出
.
最终公式(标程唯一公式):
$$\text{if} \ \left\lfloor \frac{x}{2} \right\rfloor + \left\lfloor \frac{y}{2} \right\rfloor \ \text{is even} \ \Rightarrow \ \texttt{\#} $$
详细构造规则
对 网格中每一个格子 (从 开始或从 开始都可以):
- 计算 (整数除法,向下取整)
- 计算 (整数除法,向下取整)
- 如果 是偶数 →
# - 否则 →
.
标程完整 AC 代码
#include <iostream> using namespace std; int main() { int t; cin >> t; while (t--) { int n; cin >> n; int size = n * 2; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { int x = i / 2; int y = j / 2; if ((x + y) % 2 == 0) cout << '#'; else cout << '.'; } cout << '\n'; } } return 0; }
代码解释(完全对标标程)
- 输入 组测试用例
- 对每个 ,图案大小为
- 遍历每个位置
- 计算缩小坐标
- 偶 →
#,奇 →. - 输出图案
时间复杂度
,完全满足题目限制。
样例对照
- →
## ## - →
##.. ##.. ..## ..##
完全符合标程输出。
- 1
信息
- ID
- 7141
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者