题意
给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N)。
现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], b[2], …, b[N],满足:
(1)1<=b[i]<=M(1<=i<=N);
(2)gcd(b[1], b[2], …, b[N])=d;
(3)恰好有K个位置i使得a[i]<>bi
注:gcd(x1,x2,…,xn)为x1, x2, …, xn的最大公约数。
输出答案对1,000,000,007取模的值。
1<=N,M<=300000, 1<=K<=N, 1<=a[i]<=M。
分析
首先求 gcd=d 的序列数量可以变成求 d|gcd 的序列数量,然后通过容斥或反演之类的鬼东西在 O(nlogn