Problem. M
题意简述:
有一个\(m\)进制的数系,这个数系中的数没有前导\(0\)。
对于一个数,假设它的最高位为\(x\),如果存在相邻的两位,满足高位为\(x\)低位为\((x+1)\bmod m\),那么这个数是不合法的。
现在给定\(n\),求有多少对\(1\le i\le j\le n\)满足在这个数系中\(i\)位数的个数和\(j\)位数的个数的最大公约数不大于\(m\)。
数据范围:
\(n,m\le10^{12},m\ge2\)
解法:
首先不难发现\(m=2\)时答案为\({n+1\choose 2}\)。
\(\text{Part.1}\)
最高位有\(m-1\)种可能,而且这\(m-1\)种情况下的数的个数都是相同的。
因此我们强制最高位为\(1\),设数系中有\(f_n\)个\(n\)位数,那么我们要求的就是:
\(\text{Part.2}\)
我们可以很轻松地推出\(\{f_n\}\)的递推式:
注意到\(f_2\ne mf_1-f_0\),考虑构造一个第二项即可满足递推公式的数列。
设\(g=\sum f\),利用数学归纳法不难证明\(\{g_n\}\)的递推式:
\(\{g_n\}\)的特征方程为\(x^2-mx+1=0\),设\(\Delta=m^2-4,\alpha=\frac{m+\sqrt{\Delta}}2,\beta=\frac{m-\sqrt{\Delta}}2\)。
我们可以得到\(\{g_n\}\)的通项公式:
\(\text{Part.3}\)
\(\{g_n\}\)有如下性质:
性质\(1\):$$g_{i+j}=g_ig_{j+1}-g_{i-1}g_j$$
证:
根据通项公式爆算即可。
性质\(2\):$$\gcd(g_i,g_j)=g_{\gcd(i,j)}$$
证:
不妨设\(j\ge i\)。
先证\(\gcd(g_n,g_{n+1})=1\)。
考虑归纳,\(n=0\)时命题显然成立。
\(n\ge1\)时,\(\gcd(g_n,g_{n+1})=\gcd(g_n,g_{n-1})=1\),命题成立。
因此我们有\(\gcd(g_i,g_j)=\gcd(g_i,g_ig_{j-i+1}+g_{i-1}g_{j-i})=\gcd(g_i,g_{j-i})\)。
不难发现这就是更相减损法的过程,原命题成立。
\(\text{Part.4}\)
现在考虑用\(\{g_n\}\)的性质推出\(\{f_n\}\)的性质。
性质\(1\):$$\gcd(f_i,g_i)=1$$
证:
\(\gcd(f_i,g_i)=\gcd(g_i-g_{i-1},g_i)=1\),命题成立。
性质\(2\):$$\gcd(f_i,f_j)=\gcd(f_i,g_{j-i})$$
证:
不妨设\(j\ge i\)。
\(f_{i+1}\equiv mf_i-f_{i-1}\equiv-f_{i-1}\pmod{f_i}\)
\(f_{i+2}\equiv mf_{i+1}-f_i\equiv-mf_{i-1}\pmod{f_i}\)
因此\(f_{j}\equiv-g_{j-i}f_{i-1}\pmod{f_i}\)。
那么\(\gcd(f_i,f_j)=\gcd(f_i,-g_{j-i}f_{i-1})\)
因为\(\gcd(f_i,f_{i-1})=1\),所以\(\gcd(f_i,f_j)=\gcd(f_i,g_{j-i})\),命题成立。
性质\(3\):$$\gcd(f_i,f_j)=f_{\frac{\gcd(2i-1,2j-1)+1}2}$$
证:
考虑构造一个序列\(\{h_n\}\),满足\(h_{2n}=g_n,h_{2n-1}=f_n\),现在我们要证明\(\gcd(h_r,h_t)=h_{\gcd(r,t)}\),很显然这是原命题的充分条件。
对于\(r,t\)奇偶性相同的情况我们不难证明其正确性。
因此我们只考虑\(r,t\)奇偶性不同的情况,不妨设\(r=2i-1,t=2j\)。
若\(i\le j\),设\(j=i+k\),那么我们此时要证的就是\(\gcd(f_i,g_{i+k})=\gcd(f_i,f_{k+1})\)。
若\(i<j\),设\(i=j+k\),那么我们此时要证的就是\(\gcd(g_j,f_{j+k})=\gcd(g_j,f_k)\)。
因此命题成立。
\(\text{Part.5}\)
因此\(f_i\perp f_j\Leftrightarrow 2i-1\perp2j-1\)
直接zzt筛可以做到\(O(\frac{n^{\frac23}}{\log n})\)的时间复杂度。