Problem A Divisors
给出$m$个不同的正整数$a_i$,设数论函数 $f(k) = \sum\limits_{i = 1}^{n} [(\sum\limits_{j = 1}^{m} [i |a_j] )== k]$
其中$a|b$表示$a$是$b$的因数,对于所有$k \in [0,m]$,输出答案。
对于$100\%$的数据满足$n\leq 200 , a_i \leq 10^9$
Solution :
如果我们已知$\sum\limits_{i = 1}^{m} f(i)$,那么显然$f(0) = n - \sum\limits_{i = 1}^{m} f(i)$。
考虑到如果$j \in [1,n]$是任意一个$a_i$的因数的时候,它一定被所有$a_i$因数的集合包含。
因为除去这个集合的其他$[1,n]$的数字,必然对$f(0)$贡献。
所以,直接对于每个数暴力出它的所有因数,构出这个集合$S$。其中$|S| = 2 m\sum\limits_{i = 1}^{m} \sqrt{a_i}$
对该集合去重后暴力处理出$f(1) ... f(m)$,那么$f(0) = n - \sum\limits_{i = 1}^{m} f(i) $可以方便出解。
总时间复杂度为$O(m^2\sum\limits_{i = 1}^{m} \sqrt{a_i})$