这场其他比赛也是挺有意思的,同学们可以去看看都没有特别难的!
题面详解: 给你 嗯 个数 从中挑三个使得这三个之积等于 凯 ,求方案数
思路:枚举
1.枚举 a * a * a == k
2.枚举 a * a * b == k
3.枚举 a * b * c == k
分析结束;
//Andong 2021/2/20 22:04
ll a[maxn];
int main() {
ll n, k, tmp, MAX = 0;
scanf("%lld%lld", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%lld", &tmp);
a[tmp]++;
MAX = max(MAX, tmp);
}
ll ans = 0, tt = 0;
for (ll i = 1; i <= MAX; i++) {
if (i * i * i == k)ans += a[i] * (a[i] - 1) * (a[i] - 2) / 6;
else if (k % (i * i) == 0)ans += a[i] * (a[i] - 1) * a[k / (i * i)] / 2;
for (ll j = i + 1; j <= MAX; j++) {
tmp = i * j;
if (k % tmp == 0 && k / tmp > j)ans += a[i] * a[j] * a[k / tmp];
}
}
printf("%lld", ans);
return 0;
}