#include<bits/stdc++.h>
#define int long long
#define rep(i,n)for(long long i=0;i<n;i++)
using namespace std;
int gcd(int a, int b) { if (!b)return a; return gcd(b, a%b); }
signed main() {
int n, k; scanf("%lld%lld", &n, &k);
map<int, int>mp;
rep(i, n) {
int a; scanf("%lld", &a);
mp[gcd(a, k)]++;
}
int cnt = 0;
for (auto i = mp.begin(); i != mp.end(); i++) {
for (auto j = i; j != mp.end(); j++) {
if ((*i).first*(*j).first%k == 0) {
if (i == j)cnt += ((*i).second - 1)*(*i).second / 2;
else cnt += (*i).second*(*j).second;
}
}
}
printf("%lld\n", cnt);
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:8:37: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int n, k; scanf("%lld%lld", &n, &k);
^
./Main.cpp:11:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a; scanf("%lld", &a);
^