题解
- 如果 \((a_i+a_j)\ mod\ x==0\) 那么 \((a_i\ mod\ x+a_j\ mod\ x)\ mod\ x==0\)
- 如果 \((a_i-a_j)\ mod\ y==0\) 那么 \(a_i\ mod\ y==a_j\ mod\ y\)
所以我们可以把每个 \(a\) 的求模情况存下来, \(a[i]\) 的贡献为其前面的 \(a\) 出现的对应求模情况数量
\(code\)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,x,y;
cin>>n>>x>>y;
long long ans=0;
map<int,map<int,int>> q;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
ans+=q[(x-a%x)%x][a%y];
q[a%x][a%y]++;
}
cout<<ans<<endl;
}
return 0;
}
标签:Pairs,a%,Divisible,long,int,ans,mod
From: https://www.cnblogs.com/pure4knowledge/p/18021747