双指针
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个数组 a 和数组 b ,两个数组的长度都为 n, 请选择分别两个下标 i, j, 且 i, j 满足条件 1 \leq i < j \leq n, 求有多少对 i, j 满足 a_i \times a_j = b_i \times b_j

输入描述:

本题包含多组数据

第一行包含一个正整数 T1\leq T \leq 1 \times 10^{5})。

对于每组数据:

第一行包含一个正整数 n(1 \leq n \leq 2 \times 10^5 )

接下来 2

第1行包含 n 个整数 a_1, a_2, a_3 ... a_n(1 \leq a_i \leq 2\times10^5)

第2行包含 n 个整数 b_1, b_2, b_3 ... b_n(1 \leq b_i \leq 2\times10^5)

\sum_{i=1}^{T} n \leq 2 \times 10^{5}

输出描述:

对于每组数据:

输出一行表示有多少对 i, j 满足 a_i \times a_j = b_i \times b_j
示例1

输入

复制
2
5
3 2 2 2 3
3 1 2 4 2
5
2 1 1 1 3
4 2 4 3 1

输出

复制
2
1