#include<bits/stdc++.h>
#define rep(i,n)for(int i=0;i<n;i++)
using namespace std;
int gcd(int a, int b) { if (!b)return a; return gcd(b, a%b); }
int main() {
int n, k; scanf("%d%d", &n, &k);
map<int, int>mp;
rep(i, n) {
int a; scanf("%d", &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("%d\n", cnt);
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:7:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int n, k; scanf("%d%d", &n, &k);
^
./Main.cpp:10:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a; scanf("%d", &a);
^