loj#P6438. 框出一个正方形
框出一个正方形
题目描述
(本题的最初想法非原创,原始链接有剧透,可参见讨论区)
在平面直角坐标系中,你可以每次选择两个格点(,其中 和 都是整数的点),然后做出过这两个点的直线。
画出四条这样的直线,可以围成一个正方形,这个正方形具有面积 。
给定面积 ,是否存在一种方案能围出这个正方形?如果是,请给出一种构造。
我们只考虑有理数 的情况,而你的输出也必须是精确解。
举例:
- 、、 可以构造
- 、 不能构造
- 就是 ,所以可以构造
例如,下面是一个 的构造
输入格式
第一行是一个整数 ,表示总共有 组询问
之后 行,每行两个整数 、(),表示本次询问的是 的构造。
输出格式
对于每组询问,输出一行:
- 如果给出的面积 可以构造,输出 个空格分隔的整数表示你的构造,包含:
- 条能围成面积为 的正方形的线(不必在意线的顺序)
- 每条线 个点
- 每个点两个整数 和 表示 这个点,其中, (参见“数据范围与提示”)
- 否则,面积 不能构造,输出一行
impossible
2
1 3
4 5
impossible
0 0 1 2 1 2 3 1 2 2 1 0 1 1 3 0
数据范围与提示
总共有 个测试点,每个测试点记 分。其中:
- 测试点 的输入如下:
5 4999889 3988009 4012009 4999762 3674633 4999348 4997709 2000066 4782969 1953125
- 对于测试点 ,
- 对于测试点 ,
虽然检查器使用高精度整数读入答案,但是极不推荐输出绝对值超过 的坐标值 、。这一点不应在解题过程之中产生限制。如果因坐标值绝对值过大且超出此范围,而导致无法正常评测,本题作者不接受为解决此问题改动题目的请求。