DTOJ 2937. Sum of LCM

题意:
对于 A 1 , A 2 , … , A N A_1, A_2, \ldots, A_N A1,A2,,AN ,求 ∑ i = 1 N ∑ j = 1 N l c m ( A i , A j ) \sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j) i=1Nj=1Nlcm(Ai,Aj) 的值。

l c m ( a , b ) \mathrm{lcm}(a, b) lcm(a,b) 表示 a a a b b b 的最小公倍数
题解:
如果先考虑数 A i A_{i} Ai,再算 l c m lcm lcm的贡献,则难以避免 O ( N 2 ) O(N^{2}) O(N2)的枚举,故换一个角度,考虑枚举 g c d gcd gcd,计算以这个数为 g c d gcd gcd的每对数的贡献。而对于是两个数的 g c d gcd gcd这样的条件也不好判断,故先退一步,将条件改为是两个数的公约数,于是,对于枚举的每一个 d d d,记 s [ d ] s[d] s[d] ∑ i = 1 N A i / d ∗ [ d ∣ A i ] \sum_{i=1}^NA_{i}/d*[d|A_i] i=1NAi/d[dAi],则 d d d作为公约数的贡献为 s [ d ] 2 ∗ d s[d]^{2}*d s[d]2d,然后考虑计算作为真正 g c d gcd gcd时的贡献,即减去所有它的倍数的答案*倍数大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值