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;
}
相关推荐
renhongxia11 天前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
zephyr051 天前
动态规划-最长上升子序列问题
算法·动态规划
闪电悠米1 天前
力扣hot100-56.合并区间-排序详解
数据结构·算法·leetcode·贪心算法·排序算法
卡提西亚1 天前
leetcode-1438. 绝对差不超过限制的最长连续子数组
算法·leetcode·职场和发展
Java面试题总结1 天前
LeetCode 93.复原IP地址
算法·leetcode·职场和发展·.net
从零开始的代码生活_1 天前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
泷寂1 天前
最小生成树 (MST基础)
算法
Daniel_1231 天前
数组——总结篇
算法
不懒不懒1 天前
【针对路面识别数据集,结合三轴加速度标准化数据及多路面识别需求,以下是算法选择与处理方案】
算法
Reart1 天前
Leetcode 121. 买卖股票的最佳时机(717)
后端·算法