「不会」莫比乌撕函数

Front:做第二个专题的时候,出现了一个弱智的盲区

\[F(x)=\sum\limits_{x|d} f(d) \]

\[f(x)=\sum\limits_{x|d} F(d)*\mu(\frac{d}{x}) \]

显然是正确的,是按照d比x多出的质因子集合进行容斥的。

「yydgcd」

\[\sum\limits_{i=1}^n \sum\limits_{j=1}^m \sum\limits_{k\in prime}^{min(n,m)} [(i,j)==k] \]

\[\sum\limits_{k\in prime} \sum\limits_{i=1}^{\lfloor n/k \rfloor} \sum\limits_{j=1}^{\lfloor m/k \rfloor} [(i,j)==1] \]

\[\sum\limits_{k\in prime} \sum\limits_{i=1}^{\lfloor n/k \rfloor} \sum\limits_{j=1}^{\lfloor m/k \rfloor} \sum\limits_{u|i\&u|j} \mu(u) \]

\[\sum\limits_{k\in prime} \sum\limits_{u=1}^{\lfloor min(n,m)/k \rfloor} \mu(u) \lfloor \frac{n}{ku} \rfloor\lfloor \frac{m}{ku} \rfloor \]

\[\sum\limits_{s=1}^{min(n,m)} \lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor \sum\limits_{k\in prime} \mu(\frac{s}{k}) \]

设$$f(s)=\sum\limits_{k\in prime} \mu(\frac{s}{k})$$
则可以埃筛求出\(f()\),然后取前缀和,然后整除分块

「数表」
\(f(x)=\sum\limits{k|i}k\)
为积性函数,可以线筛
考虑p的次幂被加入的次数

\[f(x*p)=f(x)*f(p) (x%p!=0) \]

\[f(x*p)=f(x)*f(p)-f(x/p)*p (x%p==0) \]

然后

\[\sum\limits_{i=1}^n \sum\limits_{j=1}^m [f[(i,j)]<=lim]f[(i,j)] \]

\[\sum\limits_{g=1}^n[f[g]<=lim]f[g]\sum\limits_{i=1}^{\lfloor n/g\rfloor}\sum\limits_{j=1}^{\lfloor m/g\rfloor}\sum\limits_{u|i,j}\mu(u) \]

\[\sum\limits_{g=1}^n[f[g]<=lim]f[g]\sum\limits_{u=1}^{min(n,m)}\mu(u)\lfloor\frac{n}{gu}\rfloor\lfloor\frac{m}{gu}\rfloor \]

\[\sum\limits_{s=1}^n \lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor \sum\limits_{g|s} [f[g]<=lim]f[g]\mu(\frac{s}{g}) \]

则可以将询问离线,从小到大解决所有的g,复杂度nlogn

「DZYlovesmath」

\[\sum\limits_{i=1}^n \sum\limits_{j=1}^m f[(i,j)] \]

\[\sum\limits_{k=1}^n f[k]\sum\limits_{i=1}^{\lfloor n/k\rfloor}\sum\limits_{j=1}^{\lfloor m/k\rfloor}\sum\limits_{u|i,u|j}\mu(u) \]

\[\sum\limits_{k=1}^n f[k]\sum\limits_{u|i,u|j}\mu(u) \lfloor \frac{n}{ku}\rfloor\lfloor \frac{m}{ku}\rfloor \]

\[\sum\limits_{s=1}^n \lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor \sum\limits_{k|s} f[k]*\mu(\frac{s}{k}) \]

考察\(F(s)=\sum\limits_{k|s} f[k]*\mu(\frac{s}{k})\),当\(\mu(\frac{s}{k})!=0\)时,\(f[k]\)只有\(f[s],f[s]-1\)两种取值

\[F(s)=\sum\limits_{k|s\&f[k]==f[s]} f[s]*\mu(\frac{s}{k})+\sum\limits_{k|s\&f[k]==f[s]-1} (f[s]-1)*\mu(\frac{s}{k}) \]

\[F(s)=\sum\limits_{k|s\&f[k]==f[s]} f[s]*\mu(\frac{s}{k})+\sum\limits_{k|s\&f[k]==f[s]-1} f[s]*\mu(\frac{s}{k})-\mu(\frac{s}{k}) \]

\[F(s)=\sum\limits_{k|s\&f[k]==f[s]} f[s]*\mu(\frac{s}{k})+\sum\limits_{k|s\&f[k]==f[s]-1} f[s]*\mu(\frac{s}{k})+\sum\limits_{k|s\&f[k]<f[s]-1} f[s]*0 -\mu(\frac{s}{k}) \]

\[F(s)=f[s]*\sum\limits_{k|s}\mu(k) -\sum\limits_{k|s\&f[k]==f[s]-1} \mu(\frac{s}{k}) \]

考察\(f[s]*\sum\limits_{k|s}\mu(k)=f[s]*[s==1]\),一定为0

\[F(s)=-\sum\limits_{k|s\&f[k]==f[s]-1} \mu(\frac{s}{k}) \]

\(s的质因子中次数为f[s]的集合为M\),由于\(f[k]==f[s]-1\)\(\frac{s}{k}\)中必然包含M中所有元素一次且仅一次
枚举其它因子包含在\(\frac{s}{k}\)中的数量,设s含有的质因数共c种

\[F(s)=-\sum\limits_{i=0}^{c-|M|}C_{c-|M|}^i (-1)^{|M|+i} \]

是一行组合数奇加偶减的形式,当\(c-|M|>0\)时显然为0
否则\(F(s)=-(-1)^{|M|}=(-1)^{|M|+1}\)
于是愉快地线性求出了\(F()\),其余整除分块处理。

「约数个数和」
注意一个事实

\[\sum\limits_{d|(i*j)}1==\sum\limits_{x|i}\sum\limits_{y|j}[(x,y)==1] \]

考虑\((i*j)\)的约数d中每个质因子p的次数c_d,设\((i*j)\)中的次数为\(c_t\),\(i\)中的次数为\(c_i\)
规定若\(c_d<=c_i\),则x中p的次数为\(c_d\),y中不含p这一因子,则会作出应有的一个贡献
\(c_d>c_i\),则x中不含p这一因子,y中含p的次数为\(c_d-c_i\),也会作出应有的一个贡献
质因子之间互相独立,故上式正确

「数字表格」「于神之怒加强版」「jzptab」的推导过程与上边几个十分相似..而且要更简单一点
「一个人的数论」

\[\sum\limits_{j|n} \mu(j)*j^d \sum\limits_{i=1}^{n/j} i^d \]

自然数幂和拆成组合数和伯努利数,由

\[S_k(n)=\frac{1}{k+1}\sum\limits_{i=0}^k C_{k+1}^iB_in^{k+1-i} \]

原式变为

\[\sum\limits_{j|n} \mu(j)*j^d*\frac{1}{d+1} \sum\limits_{i=0}^d C_{d+1}^iB_i (\frac{n}{j})^{d+1-i} \]

\[\frac{1}{d+1}\sum\limits_{i=0}^d C_{d+1}^iB_in^{d+1-i}\sum\limits_{j|n}\mu(j)j^{i-1} \]

\(\sum\limits_{j|n}\mu(j)j^{i-1}\)为积性函数,可以对每个质因子快速算出并相乘得到n的函数值
而外层d枚举即可

「GuGuFish」
我说这题目名怎么这么耳熟原来我去一家重庆咕咕鱼吃过鱼。。。
那么把柿子搞开

\[\sum\limits_{i=1}^n \sum\limits_{j=1}^m \prod\limits_{p|gcd(i,j)\&p\in Prime} \frac{p}{p-1} \]

\(f(n)=\prod\limits_{p|n\&p\in Prime} \frac{p}{p-1}\),那么这个函数可以线筛,我们先不管他

\[\sum\limits_{i=1}^n \sum\limits_{j=1}^m f((i,j)) \]

\[\sum\limits_{g=1}^{min(n,m)}f(g)\sum\limits_{i=1}^{\lfloor n/g\rfloor}\sum\limits_{j=1}^{\lfloor m/g\rfloor}\sum\limits_{u|i,j} \mu(u) \]

\[\sum\limits_{g=1}^{min(n,m)}f(g)\sum\limits_{u=1}^{min(n,m)}\mu(u)\lfloor\frac{n}{ug}\rfloor\lfloor\frac{m}{ug}\rfloor \]

\[\sum\limits_{s=1}^{min(n,m)}\lfloor\frac{n}{s}\rfloor\lfloor\frac{m}{s}\rfloor\sum\limits_{g|s}f(g)*\mu(\frac{s}{g}) \]

\(F(n)=\sum\limits_{g|n}f(g)*\mu(\frac{n}{g})\),考察这个函数,设其有平方因子\(p^2\),根据\(\frac{n}{g}\)中p的次数分情况讨论

\(!(p|\frac{n}{g})\),设此时\(\sum\limits_{g|n}f(g)*\mu(\frac{n}{g})=Val\)

\(p|\frac{n}{g}\&!(p^2|\frac{n}{g})\),易知这一部分的\(g\)中仍含有p因子,即\(f(g)\)不变
  而\(\mu(\frac{n}{g})\)中全部增加了p这一因子,变为相反数,则\(\sum\limits_{g|n}f(g)*\mu(\frac{n}{g})=-Val\)

\(p^2|\frac{n}{g}\),则\(\mu(\frac{n}{g})=0\)

\(F(n)=Val+(-Val)+0=0\),得到结论:若\(\mu(n)==0\)\(F(n)==0\)
此时\(F()\)函数可以用线筛非常简单地求出了,再加上整除分块就行了

「TrickGCD」
利用调和级数,开值域桶,枚举+组合数求方案数,用Front求解。

「Battlestation Operational」
先把柿子套路展开,然后发现只需要处理函数\(f(n)=\sum\limits_{i=1}^n \sum\limits_{j=1}^i \lceil \frac{i}{j} \rceil\)再上整除分块就行了
也就是\(h(n)=\sum\limits_{i=1}^n \lceil \frac{n}{i} \rceil\)的前缀和
向上取整很别扭,我们先求向下取整的\(g(n)=\sum\limits_{j=1}^i \lfloor \frac{n}{i} \rfloor\)
可以递推,n增加1后,所有结果不会变小,除了不变的,会有\(d(n)\)个被除数由于成为了n的因子而使商增加1
得到\(g(n)=g(n-1)+d(n)\),只差最后一步将\(g\)转化为\(h\)
由于\(\lceil \frac{a}{b}\rceil=\lfloor \frac{a-1}{b}\rfloor+1\)
\(h(n)=\sum\limits_{i=1}^n \lfloor \frac{n-1}{i}+1 \rfloor\)

\[h(n)=\sum\limits_{i=1}^{n-1} \lfloor \frac{n-1}{i} \rfloor + \lfloor \frac{n-1}{n} \rfloor + n=g(n-1)+n \]

完美。

「GCD of Sequence」
考虑枚举d计算序列gcd是d的倍数的方案数,然后用Front求解
值不是d的倍数的位置必须替换,选择有\(\lfloor \frac{n}{d} \rfloor\)
其余任意替换,但不能替换成自己,选择\(\lfloor \frac{n}{d}-1 \rfloor\)种乘上组合数。

「bookshelf」
一些神奇的结论。
1.\(gcd(fib(i),fib(i+1))==1\)
\(\begin{aligned}\\ gcd(f(i),f(i+1))&=gcd(f(i),f(i)+f(i-1))\\ &=gcd(f(i-1),f(i))\\ &=...\\ &=gcd(f(1),f(2))=1 \end{aligned}\)

2.\(gcd(fib(i),fib(j))==fib(gcd(i,j)),(i>j)\)
\(\begin{aligned}\\ gcd(f(i),f(j))&=gcd(f(i-1)+f(i-2),f(j))\\ &=gcd(2f(i-2)+f(i-3),f(j))\\ &=gcd(3f(i-3)+2f(i-4),f(j))\\ &=gcd(f(j)f(i-j+1)+f(j-1)f(i-j))\\ &=gcd(f(j-1)f(i-j),f(j))\\ &=gcd(f(i-j),f(j))\\ &=...\\ &=gcd(f(i\%j),f(j))\\ &=f(gcd(i,j)) \end{aligned}\),

3.\(gcd(2^i-1,2^j-1)=2^{gcd(i,j)}-1,(i>j)\)
\(\begin{aligned}\\ gcd(2^i-1,2^j-1)&=gcd(2^{i-j}(2^j-1)+2^{i-j}-1,2^j-1)\\ &=gcd(2^{i-j}-1,2^j-1)\\ &=...\\ &=gcd(2^{i\%j}-1,2^j-1)\\ &=2^{gcd(i,j)}-1\\ \end{aligned}\)

用各种性质qj化一下柿子,只需要对每个d求\(gcd(cnt_i)==d\)的方案数就好了
到这里用组合数乱搞就行了

「Neko and function」
设函数\(f(n,k)\)为把n依次除以k个不为1的数变为1的方案数,不同除数不同顺序算不同方案
给定k求它前n项的和,\(n<=2^30\)
为了方便把不为1的限制去掉,设\(g(n,k)\)为可以为1
枚举除数的哪些位置不为1
由于\(g(k)=\sum\limits_{i=1}^k C_k^if(i)\)
\(f(k)=\sum\limits_{i=1}^k (-1)^{k-i}C_k^ig(i)\)
这是二项式反演qwq

根据g的定义,\(g(n,k)=\sum\limits_{d|n} g(d,k-1)\)

\[g(k)=g(k-1)*1 \]

\[g(k)*u=g(k-1) \]

然后就可以杜教筛前缀和..递归30层,每层长的一样,复杂度\(30*n^{\frac{2}{3}}\)

posted @ 2019-12-30 07:50  Yxsplayxs  阅读(261)  评论(0编辑  收藏  举报