冰冰的分界线
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

【题目背景】

fresh_boy 在二维平面上有 n 个朋友。

这天,fresh_boy 收到了来自这 n 个朋友的邀约。

对于任意两个朋友 A,B,若 fresh_boy 到 A 的距离等于到 B 的距离,fresh_boy 没有理由拒绝 AB。若 fresh_boy 到 A 的距离小于到 B 的距离,fresh_boy 可以直接接受 A 的邀约,反之,若 fresh_boy 到 B 的距离小于到 A 的距离,fresh_boy 可以直接接受 B 的邀约,fresh_boy 不想陷入两难的抉择,所以他想要避开这些会使得 fresh_boy 到 A,B 的距离相等的位置。

【题目描述】

若 fresh_boy 某个朋友的坐标为 (x,y),fresh_boy 的坐标为 (X,Y),则他们之间的距离定义为:dis=\sqrt{(x-X)^2+(y-Y)^2}

对于任意两个朋友,由 fresh_boy 和二人距离相等的点所构成的直线称为一条分界线。

现给定 fresh_boy n 个朋友在二维平面上的坐标,求不同分界线的数量,两条分界线相同当且仅当其完全重合

提示:计算机的浮点数在进行比较时可能会存在精度误差,存在不能精确表示实数的情况。

输入描述:

多组测试数据。

第一行一个正整数 t(1\leq t\leq 10) 表示测试数据组数。

对于每组测试数据共三行。

第一行一个正整数 n(2\leq \sum n\leq 1000) 表示 fresh_boy 朋友数量。第二行 n 个整数表示 fresh_boy 朋友的 x(|x|\leq 10^5) 坐标;第三行 n 个整数表示 fresh_boy 朋友的 y(|y|\leq 10^5) 坐标。

数据保证 fresh_boy 没有两个朋友的坐标相同。

输出描述:

t 行,每行一个正整数表示不同的分界线数量。
示例1

输入

复制
3
6
-2 44 -17 42 -12 12
9 -43 -14 -30 7 -10
3
-32 -45 31
-3 17 -16
4
1 3 4 6
0 0 0 0

输出

复制
15
3
5