#include <iostream>
using namespace std;
// 声明全局变量
int t; // 测试用例的数量
int x, y, k; // 中心点的坐标和需要输出的点的数量
int main() {
cin >> t; // 读取测试用例的数量
while (t--) { // 遍历每个测试用例
cin >> x >> y >> k; // 读取每个测试用例的中心坐标 (x, y) 和点的数量 k
// 根据 k 生成 k 个不同的点
for (int i = 1; i <= k / 2; i++) {
// 输出坐标为 (x + i, y) 和 (x - i, y) 的点
cout << x + i << " " << y << endl;
cout << x - i << " " << y << endl;
}
// 如果 k 是奇数,输出中心点 (x, y)
if (k % 2) {
cout << x << " " << y << endl;
}
}
return 0; // 程序结束
}
逐个测试用例解释
-
第一个测试用例:
10 10 1
- 中心点是
(10, 10)
,需要输出 1 个点。 - 由于只有一个点,直接输出中心点
(10, 10)
。
- 中心点是
-
第二个测试用例:
0 0 3
- 中心点是
(0, 0)
,需要输出 3 个点。 k
是奇数,所以生成k/2 = 1
对点,以及中心点。- 输出点:
(0 + 1, 0) = (1, 0)
(0 - 1, 0) = (-1, 0)
- 中心点
(0, 0)
- 中心点是
-
第三个测试用例:
-5 -8 8
- 中心点是
(-5, -8)
,需要输出 8 个点。 k
是偶数,生成k/2 = 4
对点。- 输出点:
(-5 + 1, -8) = (-4, -8)
(-5 - 1, -8) = (-6, -8)
(-5 + 2, -8) = (-3, -8)
(-5 - 2, -8) = (-7, -8)
(-5 + 3, -8) = (-2, -8)
(-5 - 3, -8) = (-8, -8)
(-5 + 4, -8) = (-1, -8)
(-5 - 4, -8) = (-9, -8)
- 中心点是
-
第四个测试用例:
4 -5 3
- 中心点是
(4, -5)
,需要输出 3 个点。 k
是奇数,所以生成k/2 = 1
对点,以及中心点。- 输出点:
(4 + 1, -5) = (5, -5)
(4 - 1, -5) = (3, -5)
- 中心点
(4, -5)
- 中心点是
总结
- 代码通过生成对称的点对和处理奇数点的情况来满足题目要求。
- 每个测试用例输出的点总是围绕给定的中心点生成,符合题目规定。