算法竞赛中一类有关最大公因数 gcd 的求和问题

本文原载于 Math | UESTC_Jungle

如果遇到这样一类求和

T=AS(a1,a2,,an,k1,k2,,km)f(A)T = \sum_{A \subseteq S}{(a_1, a_2, \dots, a_n, k_1, k_2, \dots, k_m) \cdot f(A)}

其中 aia_i 是集合 AA 里的元素,kjk_j 是额外需要求 gcd 的元素. 记 K=k1k2kmK = k_1k_2\cdots{}k_m.

可以枚举 gcd,转换为

T=dK(dAS[d=(a1,a2,,an,k1,k2,,km)]f(A))T = \sum_{d|K}{\left(d \cdot \sum_{A \subseteq S}{[d = (a_1,a_2,\dots,a_n, k_1, k_2, \dots, k_m)]\cdot{}f(A)}\right)}

继续阅读“算法竞赛中一类有关最大公因数 gcd 的求和问题”