[ABC249D] Index Trio Solution

更好的阅读体验戳此进入

题面

给定序列 an,求满足 aiaj=ak,1i,j,kn 的不同三元组 (i,j,k) 的个数。

Solution

不难想到,原题式子不好处理,转换为 aj×ak=ai,于是不难想到一定满足 ajai,并且发现值域很小,所以显然建桶,buci 表示值为 i 的数量。不难想到 O(n) 枚举值域里每个数,然后再枚举值域范围内其所有倍数,每次枚举的贡献即为 buci×bucj×buck

然后不难发现这东西就是个埃筛,所以复杂度显然 O(nloglogn),通过调和级数等即可证明,这里略。

然后记得开 long long

Code

UPD

update-2022_11_30 初稿

update-2022_12_02 修改了公式里的一点细节