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;
}
相关推荐
Navigator_Z5 小时前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
北极有牛5 小时前
cpp学习笔记--常量指针
java·开发语言·算法
GPU实战笔记5 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
浮链序6 小时前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具
算法·安全·llm
小O的算法实验室6 小时前
IEEE TMC,面向异构物联网的多目标量子行为拓扑优化算法
算法
liliangcsdn6 小时前
派息率指标的应用探索和分析
大数据·算法
垆边人似月.7 小时前
华为机试题 :两数之和
c++·算法·华为
默默开发7 小时前
物流行业可用算法方向
算法
垆边人似月.7 小时前
华为机试题 :有效的括号
c++·算法·华为
A加ITIL教练长河achotsao8 小时前
ITIL Master 战略领导者课后系列分享:AI编程正在重新划分研发与运维的边界
算法