Description
有一只马刚开始在(0,0)(0,0)(0,0),它每次可以走一个a×ba×ba×b的矩形。如果可以到达无穷大棋盘上的任何一个点,则p(a,b)=1p(a,b)=1p(a,b)=1;否则p(a,b)=0p(a,b)=0p(a,b)=0。
给定nnn,求∑i=1n∑j=1np(i,j)\sum_{i=1}^n \sum_{j=1}^n p(i,j)i=1∑nj=1∑np(i,j)
由于答案可能过大,请将其对2642^{64}264取模。
Solution
不难发现,p(i,j)=1p(i,j)=1p(i,j)=1的充分必要条件是gcd(i,j)=1gcd(i,j)=1gcd(i,j)=1且当iii与jjj在模222意义下不同余。
等价于我们要计算∑i=1n∑j=1n[i mod 2≠j mod 2][gcd(i,j)=1]\sum_{i=1}^n \sum_{j=1}^n [i\ mod\ 2≠j\ mod\ 2][gcd(i,j)=1]i=1∑nj=1∑n[i mod 2=j mod 2][gcd(i,j)=1]
开始愉快地反演~
∑i=1n∑j=1n[i mod 2≠j mod 2]∑d∣gcd(i,j)μ(d)\sum_{i=1}^n \sum_{j=1}^n [i\ mod\ 2≠j\ mod\ 2] \sum_{d|gcd(i,j)} \mu(d)i=1∑nj=1∑n[i mod 2=j mod 2]d∣gcd(i,j)∑μ(d)
=∑d=1n[d∈odd]μ(d)∑i=1n∑j=1n[i mod 2≠j mod 2][d∣gcd(i,j)]=\sum_{d=1}^n [d∈odd] \mu(d) \sum_{i=1}^n \sum_{j=1}^n [i\ mod\ 2≠j\ mod\ 2][d|gcd(i,j)]=d=1∑n[d∈odd]μ(d)i=1∑nj=1∑n[i mod 2=j mod 2][d∣gcd(i,j)]
=∑d=1n[d∈odd] μ(d) f(n,d)=\sum_{d=1}^n [d∈odd]\ \mu(d)\ f(n,d)=d=1∑n[d∈odd] μ(d) f(n,d)
这里的f(n,d)=⌊n2d⌋×(⌊nd⌋−⌊n2d⌋)f(n,d)=\lfloor \frac n {2d} \rfloor×(\lfloor \frac n d \rfloor-\lfloor \frac n {2d} \rfloor)f(n,d)=⌊2dn⌋×(⌊dn⌋−⌊2dn⌋)。⌊n2d⌋\lfloor \frac n {2d} \rfloor⌊2dn⌋表示在ddd的倍数中偶数的个数,(⌊nd⌋−⌊n2d⌋)(\lfloor \frac n d \rfloor-\lfloor \frac n {2d} \rfloor)(⌊dn⌋−⌊2dn⌋)显然就是ddd的倍数中奇数的个数。
可以发现,fff可以通过整除分块来快速计算,但是我们似乎不能快速求出∑i=lr[i∈odd] mu(i)\sum_{i=l}^r [i∈odd]\ mu(i)∑i=lr[i∈odd] mu(i)。这一部分可以拆成两个前缀和相减的形式,现在关键在于如何快速求得∑i=1r[i∈odd] μ(i)\sum_{i=1}^r [i∈odd]\ \mu(i)∑i=1r[i∈odd] μ(i)。
∑i=1r[i∈odd] μ(i)\sum_{i=1}^r [i∈odd]\ \mu(i)i=1∑r[i∈odd] μ(i)
=∑i=1rμ(i)−∑i=1⌊r2⌋μ(2i)=\sum_{i=1}^r \mu(i)-\sum_{i=1}^{\lfloor \frac r 2 \rfloor} \mu(2i)=i=1∑rμ(i)−i=1∑⌊2r⌋μ(2i)
可以发现,当iii为偶数时,μ(2i)=0\mu(2i)=0μ(2i)=0没有贡献;否则,μ(2i)=−μ(i)\mu(2i)=-\mu(i)μ(2i)=−μ(i)。带入得:
=∑i=1rμ(i)+∑i=1⌊r2⌋μ(i)[i∈odd]=\sum_{i=1}^r \mu(i)+\sum_{i=1}^{\lfloor \frac r 2 \rfloor} \mu(i) [i∈odd]=i=1∑rμ(i)+i=1∑⌊2r⌋μ(i)[i∈odd]
根据∑d∣rμ(d)=[r=1]\sum_{d|r} \mu(d)=[r=1]∑d∣rμ(d)=[r=1],∑i=1r\sum_{i=1}^r∑i=1r可以通过杜教筛快速计算;后者相当于一个规模减半的问题,可以直接递归下去,边界为r=1r=1r=1。
本题的解法讲解到此为止。
这样的复杂度为什么是正确的呢?由于杜教筛的复杂度为O(n23)O(n^{\frac 2 3})O(n32)(要先预处理出前23\frac 2 332个答案),所以总时间复杂度为
O(n23+(12n)23+(14n)23+……)O(n^{\frac 2 3}+(\frac 1 2 n)^{\frac 2 3}+(\frac 1 4 n)^{\frac 2 3}+……)O(n32+(21n)32+(41n)32+……)
所以总时间复杂度就是O(n23)O(n^{\frac 2 3})O(n32)的,虽然带着比较大的常数。
本文探讨了一种特定的棋盘路径计数问题,通过数学分析给出了解决方案。利用数论中的欧拉函数和莫比乌斯反演,将问题转化为求解数对的条件概率。最终提出了一种有效算法,结合杜教筛技术实现快速计算。

被折叠的 条评论
为什么被折叠?



