原题medium
原题hard
翻译
如果你不会CF1808E1的\(O(nK^3)\)做法,请点击这里
本题涉及:数据诈骗,这道题可以做到\(O(\log{n} + \log{K})\)的复杂度
我们发现对于所有数位的和\(S\),满足\(2x \equiv S (\mod K)\)的\(x\)的种类只有\(1\)个或\(2\)个。具体的,当\(K\)为奇数时,\(x\)的种类有且只有一个,当\(K\)为偶数时,若\(S\)为偶数,则\(x\)的种类有\(2\)个,否则无解。因此,我们对\(K\)分奇偶考虑
我们发现我们不知道值为\(x\)的位置有多少个,而如果枚举个数的话\(n \leq 10^{18}\)。正难则反,我们考虑拿总方案数\(-\)没有一个位置为\(x\)的方案数
我们发现正好有\(i\)个位置是\(x\)的方案数是难求的,但我们可以求出钦定\(i\)个位置是\(x\),且满足\(2x \equiv S (\mod K)\)的方案数,然后用二项式反演啊
我们设\(f_s(i)\)表示钦定\(i\)个数为\(x\),且满足\(2x \equiv S (\mod K)\)的方案数;同样的,\(g_s(i)\)表示恰好\(i\)个数为\(x\),且满足条件的方案数,我们可以得到:
\[\begin{align}
f_s(i) &= \binom{n}{i} K^{n-i-1} \ \ \ \ \ (i<n) \\
g_s(i) &= \sum_{j=i}^{n}{(-1)^{j-i} \binom{j}{i} f_s(j)}
\end{align}
\]
其中计算\(f_s(i)\)时\(K^{n-i-1}\)的意思是剩下\(n-i-1\)位随便填,而我们只需要让最后一位填他们剩下的数,这样就能保证\(2x \equiv S (\mod K)\)的限制条件了
这里要注意\(f_s(i)\)在\(i=n\)时不满足条件,因为我们没有剩下的空位可以保证限制条件的满足,因此,对于\(i=n\)时要单独计算,计算方法后面再说
答案即为:
\[\begin{align}
\sum_{s=0}^{K-1}{g_s(0)} &= \sum_{s=0}^{K-1}{\sum_{j=0}^{n}{(-1)^j f_s(j)}} \\
&= \sum_{s=0}^{K-1}{\sum_{j=0}^{n-1}{(-1)^j f_s(j)} + (-1)^n f_s(n)} \\
&= \sum_{s=0}^{K-1}{(\sum_{j=0}^{n-1}{(-1)^j \binom{n}{j} K^{n-j-1}} + (-1)^n f_s(n))} \\
&= \sum_{s=0}^{K-1}{(\frac{\sum_{j=0}^{n-1}{(-1)^j \binom{n}{j} K^{n-j}}}{K} + (-1)^n f_s(n))} \\
&= \sum_{s=0}^{K-1}{(\frac{\sum_{j=0}^{n}{(-1)^j \binom{n}{j} K^{n-j}} - (-1)^n}{K} + (-1)^n f_s(n))} \\
&= \sum_{s=0}^{K-1}{(\frac{(K-1)^n - (-1)^n}{K} + (-1)^n f_s(n))} \\
&= (K-1)^n - (-1)^n + (-1)^n \sum_{s=0}^{K-1}{f_s(n)} \\
\end{align}
\]
然后我们考虑\(f_s(n)\)怎么算,我们发现\(f_s(n) = [nx \equiv S (\mod K)]\),我们把\(2x \equiv S\)带入后化简一下得到\(f_s(n) = [S(n-2) \equiv 0 (\mod K)]\),而\(S(n-2)\)是一个定值。因此我们可以得到:\(\sum_{s=0}^{K-1}{f_s(n)} = \gcd(n-2,K)\)
带入化简后易得:\(ans = (K-1)^n - (-1)^n + (-1)^n \gcd(n-2,K)\)
最后不要忘记拿\(K^n\)减去\(ans\)
首先,我们可以发现\(S\)为奇数时肯定无解,因此我们只考虑\(S\)为偶数的情况。此时可能的\(x\)值有\(x_1 = \frac{S}{2},x_2 = \frac{S+K}{2}\)
类似的,我们可以知道:
\[\begin{align}
f_s(i) &= \binom{n}{i} 2^i K^{n-i-1} \ \ \ \ \ (i<n) \\
g_s(i) &= \sum_{j=i}^{n}{(-1)^{j-i} \binom{j}{i} f_s(j)}
\end{align}
\]
其中\(2^i\)表示枚举这\(i\)个位置是\(x_1\)还是\(x_2\)的方案数
类似的推式子,可以得到:
\[\begin{align}
\sum_{s=0,2|s}^{K-1}{g_s(0)} &= \ ...... \\
&= \sum_{s=0,2|s}^{K-1}{(\frac{(K-2)^n - (-2)^n}{K} + (-1)^n f_s(n))} \\
&= \frac{(K-2)^n - (-2)^n}{2} + (-1)^n \sum_{s=0,2|s}^{K-1}{f_s(n)} \\
\end{align}
\]
我们考虑如何计算\(f_s(n)\),我们发现有\(f_s(n) = \sum_{j=0}^{n}{ \binom{n}{j}[x_2 j + x_1 (n-j) \equiv S (\mod K)] }\),我们考虑化简式子:
\[\begin{align}
f_s(n) &= \sum_{j=0}^{n}{ \binom{n}{j}[x_2 j + x_1 (n-j) \equiv S (\mod K)] } \\
&= \sum_{j=0}^{n}{ \binom{n}{j}[\frac{S+K}{2} j + \frac{S}{2} (n-j) \equiv S (\mod K)] } \\
&= \sum_{j=0}^{n}{ \binom{n}{j}[\frac{K}{2} j \equiv \frac{S}{2}(2-n) (\mod K)] } \\
\end{align}
\]
我们发现对于同余号左边\(\frac{K}{2} j \mod K\)的值只有\(0\)和\(\frac{K}{2}\)两种,而\(\frac{S}{2}(2-n)\)是一个定值,因此仅当\(S(2-n) \equiv 0 (\mod \frac{K}{2})\)时,\(f_s(n)\)才能取到值,否则\(f_s(n) = 0\)
我们通过二项式定理可以知道:
\[\begin{align}
(1-1)^n &= \sum_{i=0}^{n}{(-1)^i \binom{n}{i}} \\
0 &= \sum_{i=0}^{n}{(-1)^i \binom{n}{i}} \\
\sum_{i=0,2|i}^{n}{\binom{n}{i}} &= \sum_{i=1,2 \nmid i}^{n}{\binom{n}{i}} \\
\end{align}
\]
\[\begin{align}
(1+1)^n &= \sum_{i=0}^{n}{\binom{n}{i}} \\
\sum_{i=0}^{n}{\binom{n}{i}} &= 2^n \\
\end{align}
\]
由这两个式子可知,\(f_s(n) = 2^{n-1}[S(2-n) \equiv 0 (\mod \frac{K}{2})]\),然后就变成了我们已知的一个问题:
\[\begin{align}
\sum_{s=0,2|s}^{K-1}{f_s(n)} &= \sum_{s=0,2|s}^{K-1}{2^{n-1}[S(2-n) \equiv 0 (\mod \frac{K}{2})]} \\
&= 2^{n-1}\sum_{s=0,2|s}^{K-1}{[S(2-n) \equiv 0 (\mod \frac{K}{2})]} \\
&= 2^{n-1}\sum_{s=0}^{K-1}{[S(2-n) \equiv 0 (\mod \frac{K}{2})]} \\
&= 2^{n-1} gcd(n-2, K) \\
\end{align}
\]
最后不要忘了用总方案数\(\frac{K^n}{2} -\)不满足条件的方案数
最终复杂度\(O(\log{n} + \log{K})\)