D. Divisible Pairs

time limit per test

2 seconds

memory limit per test

256 megabytes

Polycarp has two favorite integers x and y (they can be equal), and he has found an array a of length n.

Polycarp considers a pair of indices ⟨i,j⟩ (1≤i<j≤n) beautiful if:

  • ai+aj is divisible by x;
  • ai−aj is divisible by y.

For example, if x=5, y=2, n=6, a=1,2,7,4,9,6, then the only beautiful pairs are:

  • ⟨1,5⟩: a1+a5=1+9=10 (10 is divisible by 5) and a1−a5=1−9=−8 (−8 is divisible by 2);
  • ⟨4,6⟩: a4+a6=4+6=10 (10 is divisible by 5) and a4−a6=4−6=−2 (−2 is divisible by 2).

Find the number of beautiful pairs in the array a.

Input

The first line of the input contains a single integer t (1≤t≤104) --- the number of test cases. Then the descriptions of the test cases follow.

The first line of each test case contains three integers n, x, and y (2≤n≤2⋅105, 1≤x,y≤109) --- the size of the array and Polycarp's favorite integers.

The second line of each test case contains n integers a1,a2,...,an (1≤ai≤109) --- the elements of the array.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.

Output

For each test case, output a single integer --- the number of beautiful pairs in the array a.

Example

Input

Copy

复制代码

7

6 5 2

1 2 7 4 9 6

7 9 5

1 10 15 3 8 12 15

9 4 10

14 10 2 2 11 11 13 5 6

9 5 6

10 7 6 7 9 7 7 10 10

9 6 2

4 9 7 1 2 2 13 3 15

9 2 3

14 6 1 15 12 15 8 2 15

10 5 7

13 3 3 2 12 11 3 7 13 14

Output

Copy

复制代码
2
0
1
3
5
7
0

解题说明:此题是一道数学题,可以进行预处理出每个数分别摸上xy的值,用map存一下,然后遍历每个数,如果a + b是x的倍数的话,那么他们模x的值相加为x,如果a - b是y的倍数的话,那么他们的模y的值相等。

cpp 复制代码
#include<bits/stdc++.h>
#include<algorithm>
#include<map>
#include<iostream>
using namespace std;
long long n, x, y, c, i;
int a[200001];

int main() 
{
	int t = 1;
	cin >> t;
	while (t--)
	{
		cin >> n >> x >> y;
		map<int, map<int, int>>m;
		for (i = c = 0; i < n;) 
		{
			cin >> a[i];
			c += m[(x - a[i] % x) % x][a[i] % y];
			m[a[i] % x][a[i++] % y]++;
		}
		cout << c << '\n';
	}
	return 0;
}
相关推荐
To_OC19 小时前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
金銀銅鐵1 天前
[Python] 扩展欧几里得算法
python·数学·算法
To_OC1 天前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
To_OC2 天前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
05Kevin2 天前
lk每日冒险题--数据结构6.27
算法
To_OC3 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安3 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者3 天前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent