zhugezy

Codeforces 185D Visit of the Great (数学基础,数论)

题意

给定\(Q(\leq 10^5)\)组查询,每组查询四个数\(k,l,r,p(k\leq 10^6, 0\leq l\leq r\leq 10^{18}, p\leq 10^9)\)\(p\)为质数,求

\[lcm(k^{2^l}+1,k^{2^{l+1}}+1,...,k^{2^r}+1)\%p \]

我的解题过程

上来先一个打表找规律,惊讶的发现

\[gcd(k^{2^x}+1,k^{2^{x+y}}+1)=\begin{cases}1& k \text{ is even}\\2& k \text{ is odd}\\\end{cases} \]

然后就顺理成章,根据\(lcm(a,b)=\frac{ab}{gcd(a,b)}\)有了

\[Ans=\begin{cases}\prod\limits_{i=l}^r(k^{2^i}+1)& k\text{ is even}\\\frac{\prod\limits_{i=l}^r(k^{2^i}+1)}{2^{r-l}}& k\text{ is odd}\\\end{cases} \]

研究一下\(P=\prod\limits_{i=l}^r(k^{2^i}+1)\).

\[\begin{align}P&=(k^{2^l}+1)(k^{2^{l+1}}+1)...(k^{2^r}+1)\\&=({(k^{2^{l}})}^{2^0}+{(k^{2^{l}})}^{0})({(k^{2^{l}})}^{2^1}+{(k^{2^{l}})}^{0})...({(k^{2^{l}})}^{2^{r-l}}+{(k^{2^{l}})}^{0})\\&=({(k^{2^{l}})}^{(001)_2}+{(k^{2^{l}})}^{0})({(k^{2^{l}})}^{(010)_2}+{(k^{2^{l}})}^{0})...({(k^{2^{l}})}^{(10...0)_2}+{(k^{2^{l}})}^{0})\\\end{align} \]

用二进制的方法来看的话,如果把每一项乘出来,就是有\(r-l\)个二进制位,每一位都可以是0或1。因此

\[\begin{align}P&=\sum\limits_{j=0}^{2^{r-l+1}-1}{(k^{2^{l}})}^j\\&=\frac{{(k^{2^l})}^{2^{r-l+1}}-1}{k^{2^l}-1}& k\not=1\\&=\frac{k^{2^{r+1}}-1}{k^{2^l}-1}& k\not=1\\\end{align} \]

由欧拉定理\(gcd(k,p)\not=1\),即\(k\%p\not=0\)时,\(k^{2^l}\equiv k^{2^l\%(p-1)}(mod\ p)\).所以这个\(k\)的高次幂也很好求,老套路了。当\(p|k\)时,显然有\(k^{2^l}-1\equiv k^{2^{r+1}} - 1\equiv(-1)(mod\ p)\),且\(gcd(k^{2^l}-1,p)=1\),所以很显然\(P=1\).

剩下的情况中,\(gcd(k^{2^l}-1,p)=1\)时也很好搞,直接求逆元搞出来就行。但当\(gcd(k^{2^l}-1,p)\not=1\)\(p|(k^{2^l}-1)\)时,由于逆元不存在,情况有点复杂。因此观察并构造出如下等式:

\[k^{2^{r+1}}-1=(k^{2^l}-1)(k^{2^{r+1}-2^l}+k^{2^{r+1}-2*2^l}+k^{2^{r+1}-3*2^l}+...+k^{2^{r+1}-2^{r-l+1}*2^l}) \]

显然\(T=k^{2^{r+1}-2^l}+k^{2^{r+1}-2*2^l}+k^{2^{r+1}-3*2^l}+...+k^{2^{r+1}-2^{r-l+1}*2^l}\)是我们要的结果。

\[\begin{align}T&=k^{2^{r+1}-2^l}+k^{2^{r+1}-2*2^l}+k^{2^{r+1}-3*2^l}+...+k^{2^{r+1}-2^{r-l+1}*2^l}\\&=k^{2^{r+1}}(\frac{1}{k^{2^{l}}}+\frac{1}{{(k^{2^{l}})}^2}+\frac{1}{{(k^{2^{l}})}^3}+...+\frac{1}{{(k^{2^{l}})}^{2^{r-l+1}}})\\&=k^{2^{r+1}}(\frac{1}{k^{2^{l}}}+(\frac{1}{k^{2^{l}}})^2+(\frac{1}{k^{2^{l}}})^3+...+(\frac{1}{k^{2^{l}}})^{2^{r-l+1}})\\\end{align} \]

由于\(p|(k^{2^l}-1)\),即\(k^{2^l}\equiv 1(mod\ p)\),可知\(gcd(k^{2^l},p)=1\),因此有\(\frac{k^{2^{r+1}}}{k^{2^l}}\equiv k^{2^{r+1}}(mod\ p)\).因此很显然

\[\begin{align}T&\equiv k^{2^{r+1}}(1+1+1+...+1)(mod\ p)\\&\equiv k^{2^{r+1}}2^{r-l+1}(mod\ p)\\\end{align} \]

现在就能轻松求解出\(T\)。这题就结束了。

反思

1.为什么

\[gcd(k^{2^x}+1,k^{2^{x+y}}+1)=\begin{cases}1& k \text{ is even}\\2& k \text{ is odd}\\\end{cases} \]

看了一眼,官方题解中给出了\(y=1\)时的证明,还是比较巧妙的。

\(d=gcd(k^{2^x}+1,k^{2^{x+1}}+1)\).因此\(k^{2^x}\equiv-1(mod\ d)\).平方得\(k^{2^{x+1}}\equiv 1(mod\ d)\).但\(k^{2^{x+1}}\equiv-1(mod\ d)\),所以只能有\(d\leq2\).再对\(k\)的奇偶性讨论,即可得出结论。

2.事实上,最后一段讨论我绕了个弯路。观察到\(k^{2^l}\equiv 1(mod\ p)\),很明显就有\(P\equiv \sum\limits_{j=0}^{2^{r-l+1}-1}{(k^{2^{l}})}^j\equiv 2^{r-l+1}(mod\ p)\)了。

posted on 2019-12-09 03:18  zhugezy  阅读(205)  评论(0编辑  收藏  举报

导航