题目大意:给你一个集合,求所有子集的gcd之和。所有数据均小于等于1000,集合数量小于等于1000.结果对1e8+7取模
思路:
我们考虑记f[i]表示从这些数中选择若干个数,使得他们的gcd是i的倍数的方案数。假如有K个数是i的倍数,则f[i]=2^K-1,再用g[i]表示从这些数中选择若干个数,使得他们的gcd是i的方案数,则g[i]=f[i] - g[j] (对于所有j是i的倍数)。
由调和级数可以得到复杂度为O(MaxV *log(MaxV))
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include