1
第一题是裸的反演;
[egin{align}
Ans&=prod_{i=1}^nprod_{j=1}^ma[(i,j)]\
&=prod_{d=1}^na[d]^{f(d)}\
f(d)&=sum_{i=1}^{lfloorfrac{n}{d}
floor}lfloorfrac{n}{id}
floorlfloorfrac{m}{id}
floormu(i)
end{align}]
考虑更换为枚举(i*d),
那么就有,
[egin{align}
Ans&=prod_{k=1}^nsum_{d|k}a[d]^{lfloorfrac{n}{k}
floorlfloorfrac{m}{k}
floormu(frac{k}{d})}\
&=prod_{k=1}^n(sum_{d|k}a[d]^{mu(frac{k}{d})})^{lfloorfrac{n}{k}
floorlfloorfrac{m}{k}
floor}
end{align}]
显然,我们可以预处理((sum_{d|k}a[d]^{mu(frac{k}{d})})),于是就能分块做了。
2
如果一个结点与其父亲颜色不同,就给他打上标记1。
3
至少存在一个=存在=所有-不存在;
我们用dp来进行序列计数,(f[i][j])表示前i个数的前缀和%p的值为j的方案数。
显然可以矩阵乘法。