题目的意思是统计(i,j,k)满足a[i]*a[j]=a[k]的数量
思路:数据不大,用数组表示a[n]的大小然后统计个数。满足题目的数量就是3个数量的乘积。
#include<iostream>
using namespace std;
typedef pair<int,int> P;
#define fi first
#define sc second
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define rep(i,m,n) for(int i=m;i<n;i++)
const int maxn=1e6+7;
int a[maxn];
signed main(){
int n;
cin>>n;
int num;
rep(i,0,n){
scanf("%d",&num);
a[num]++;
}
long long ans=0;
for(int i = 1; i < maxn; i++)
for(int j = 1; i * j < maxn; j++)
ans += a[i]*a[j]*a[i*j];
cout<<ans<<endl;
}