AT_abc249_d [ABC249D] Index Trio 题解
前言。
今天正好在家休息,于是写一篇题解庆祝一下。
这个题是一个简单的暴力题。
分析。
由题目得
那么最朴素的做法就是直接暴力
那么如何优化呢?考虑桶。我们用桶去存
如果您没有看懂这个步骤,那请您再看一眼最初提出的式子。
最后加上可能性,注意到数字有可能重复,所以相同数字的三元组但组合方式不同时,有每个数乘积个可能结果,所以答案可能很大。
代码如下,仅供参考:
#include<iostream>
#include<vector>
using namespace std;
int n,a[200005];
vector<int> t(200005);
//用变长数组去存这些数。
long long ans;
int main(){
cin>>n;
for (int i=0;i<n;i++){
cin>>a[i];
t[a[i]]++;
}
//开始暴力枚举。
for (int i=1;i<=200000;i++){
for (int j=1;i*j<=200000;j++){
ans+=(long long)t[i]*t[j]*t[i*j];
}
}
//注意类型转换。
cout<<ans<<"\n";
return 0;
}
后记。
大家如有疑问,可以在评论区提出,我会尽力解答的。