不得不说,这次比赛的前4题是真的水
言归正传,这道题目我们要先做一个小小的转换
·
A
i
A
j
=
A
k
\frac{A_i}{A_j}\ =\ A_k
AjAi = Ak
·
A
i
=
A
j
×
A
k
{A_i}={A_j} \times{A_k}
Ai=Aj×Ak
转换之后,就不难发现:直接用map记录每个数出现的次数,再直接枚举所有的
A
j
{A_j}
Aj 和
A
k
{A_k}
Ak ,再相乘得到
A
i
{A_i}
Ai。
#include<bits/stdc++.h>
using namespace std;
#define int long long//别忘了开long long
int n,x;
map<int,int>m;
int ans;
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&x);
m[x]++;//用map记录每个数出现的次数
}
//暴力枚举i,j,k
for(int i=1;i<=200000;i++)
for(int j=1;i*j<=200000;j++)
ans+=m[i]*m[j]*m[i*j];
printf("%lld",ans);
return 0;
}