题目
算法
- 前后缀分解
代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int N = 2e5+10;
#define int long long
int n,m;
int a[N];
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) scanf("%lld", &a[i]);
unordered_map<int,int> l,r;
for(int i=1;i<=n;i++)
{
r[a[i]]++;
}
long long res=0;
for(int i=1;i<=n;i++)
{
int x=a[i];
r[a[i]]--;
if((x%m+m)%m==0)
{
res+=l[x/m]*r[x*m];
}
l[a[i]]++;
}
cout<<res;
}