codeforces Count Pairs
https://codeforces.com/problemset/problem/1188/B
$ (a_i+a_j)(a_i^2+a_j^2)\equiv k(mod p) $
$ (a_i^4-a_j^4)\equiv (a_i-a_j)k(mod p) $
$ a_i^4-a_ik\equiv a_j^4-a_jk(mod p) $
모든 $ a_i $에 대하여 $ a_i^4-a_ik(mod p) $ 를 저장해 둔 후, 같은 값을 가지는 $ a_i $가 2개 이상이면 combination 하면 되는 수학문제이다.
#include<bits/stdc++.h>
using namespace std;
const int SZ=300005;
typedef long long ll;
map<ll,ll> vst;
ll n,p,k;
int main(void){
ios::sync_with_stdio(false); cin.tie(NULL);
cin>>n>>p>>k;
for(int i=1;i<=n;i++){
ll x; cin>>x;
ll rem=(x*(x*(x*x%p)%p+p-k))%p;
vst[rem]++;
}
ll ans=0;
for(auto it=vst.begin();it!=vst.end();++it){
if(it->second>1){
ans+=((it->second)*(it->second-1))/2;
}
}
cout<<ans;
return 0;
}