[ABC249D] Index Trio

原站链接

洛谷链接

不得不说,这次比赛的前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;
}
  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值