#P12979. [GCJ 2022 Qualification] Punched Cards

[GCJ 2022 Qualification] Punched Cards

Description

一个秘密程序员团队正计划颠覆编程语言的格局,通过引入一种名为 Punched Card Python 的新语言让穿孔卡片重出江湖!这种语言允许人们使用穿孔卡片编写 Python 代码。像优秀的颠覆者一样,他们甚至还没有原型设计,就准备发起一场病毒式营销活动来推广这门新语言。为了这场活动,他们需要用 ASCII 艺术绘制不同尺寸的穿孔卡片。

他们想要绘制的穿孔卡片的 ASCII 艺术类似于一个没有左上角单元格的 R×C\mathbf{R} \times \mathbf{C} 矩阵。也就是说,总共有 (RC)1(\mathbf{R} \cdot \mathbf{C}) - 1 个单元格。每个单元格在 ASCII 艺术中被绘制为一个由上下短横线(-)、左右竖线(|)、角落加号(+)包围的句点(.)。相邻单元格共享边框上的共同字符。句点(.)用于对齐顶行的单元格。

例如,以下是一个 R=3\mathbf{R} = 3 行、C=4\mathbf{C} = 4 列的穿孔卡片:

..+-+-+-+
..|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+

下方样例中还有其他尺寸的示例。给定描述穿孔卡片尺寸的整数 R\mathbf{R}C\mathbf{C},按照上述要求打印其 ASCII 艺术绘图。

Input Format

输入的第一行给出测试用例的数量 T\mathbf{T}。随后是 T\mathbf{T} 行,每行描述一个不同的测试用例,包含两个整数 R\mathbf{R}C\mathbf{C}:表示需要绘制的穿孔卡片的行数和列数。

Output Format

对于每个测试用例,输出一行 Case #x:,其中 xx 是测试用例编号(从 1 开始)。然后,额外输出 (2R)+1(2 \cdot \mathbf{R}) + 1 行,包含 R\mathbf{R}C\mathbf{C} 列穿孔卡片的 ASCII 艺术绘图。

3
3 4
2 2
2 3
Case #1:
..+-+-+-+
..|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
Case #2:
..+-+
..|.|
+-+-+
|.|.|
+-+-+
Case #3:
..+-+-+
..|.|.|
+-+-+-+
|.|.|.|
+-+-+-+

Hint

样例解释

样例 #1 是题目描述中的示例。样例 #2 和 #3 是额外示例。注意,每个用例的输出恰好包含 RC+3\mathbf{R} \cdot \mathbf{C} + 3 个句点。

限制条件

测试集 1(11 分,可见评测结果)

  • 1T811 \leq \mathbf{T} \leq 81
  • 2R102 \leq \mathbf{R} \leq 10
  • 2C102 \leq \mathbf{C} \leq 10

翻译由 DeepSeek V3 完成