数论练习题

数论配套练习题

该文是我整理的数论毒瘤好题,遇到不熟悉的知识可以查阅这三篇文章:数论上数论中数论下

在后期我可能会陆陆续续添加一些新的好题进来,可以认为是一篇长期更新的文章。

这些题目会相对综合。比较板的题目都在前面三篇文章的例题里面。

考虑到 CF 和 AT 要人机验证,于是放的题目链接都是洛谷的。还有一些神秘联考题可能没有题目链接。

我个人认为有些题其实口糊一下就可以了,不是每个题目都必须要写一遍代码才行的。

P2312 NOIP 2014 提高组 解方程 - 洛谷

先来个诈骗题热身。

题意:已知多项式方程:\(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\) ,求这个方程在 \([1,m]\) 内的整数解(\(n\)\(m\) 均为正整数)。

\(0<n\le 100,|a_i|\le 10^{10000},a_n≠0,m<10^6\)

首先高次方程没有求根公式,只能暴力枚举答案。

第一想法是直接 \(O(nm)\) 枚举,结果发现 \(a_i\) 太大了。

考虑哈希。

直接随便选几个数作为模数,最好是质数或是互质的数,,枚举 \(x\in[1,m]\),如果在取模意义下带入 \(x\) 后,上式都为 \(0\),就认为 \(x\) 合法。

这种取模的思想本质上是 CRT ,也可以认为是哈希。非常的有用。甚至还可以用来卡空间。

P1072 NOIP 2009 提高组 Hankson 的趣味题 - 洛谷

已知正整数 \(a_0,a_1,b_0,b_1\),设某未知正整数 \(x\) 满足:

  1. \(x\)\(a_0\) 的最大公约数是 \(a_1\)

  2. \(x\)\(b_0\) 的最小公倍数是 \(b_1\)

求出满足条件的 \(x\) 的数量。

\(1 \leq a_0,a_1,b_0,b_1 \leq 2 \times 10^9\)\(n≤2000\)

数据范围表示可以直接分解质因数,甚至可以直接用加上了剪枝的试除法来分解。

为了方便表示,我们记 \(n\) 分解出来的质因子 \(p\)\(v_p(n)\) 个。

分解了质因数后再看这两个限制:

  1. \(x\)\(a_0\) 的最大公约数是 \(a_1\)

对每个质因子分开考虑,假设现在在考虑的质因子是 \(p\)

如果 \(v_p(a_0) < v_p(a_1)\),则 \(v_p(x) = v_p(a_1)\).

如果 \(v_p(a_0) = v_p(a_1)\),则 \(v_p(x) \le v_p(a_1)\).

如果 \(v_p(a_0) > v_p(a_1)\),则无解.

  1. \(x\)\(b_0\) 的最小公倍数是 \(b_1\)

是类似的,我懒得写了。

这个题告诉我们,与约数有关的题,分解质因数是一个突破口。

P8255 NOI Online 2022 入门组 数学游戏 - 洛谷

简化题意:对于 \(z=x\times y\times \gcd(x,y)\),已知 \(x,z\) ,求 \(y\),或判断无解。\(x\le1e9,z\le1e18\). 有 \(5e5\) 组数据。

一个初步的想法是:先把 \(z,x\) 因式分解了,观察 \(x\)\(z\) 的每一个分解出来的因数的次数的大小关系,就可以得到 \(y\)。但是因式分解 \(z\) 就已经超时。

更聪明一点的知道还可以多推一下式子。

设:

\[\begin{aligned} d &= \gcd(x,y)\\ x' &= x / d,y'=y/d\\ z &= d^3 \times x' \times y'\\ z' &= z / x = d^2\times y'\\ \gcd(x^2,z') &= d^2\\ y &= \frac{z}{\sqrt{\gcd(x^2,z')}\times x} \end{aligned} \]

注意,直接 \(\gcd(x,z')\) 可能不是 \(d\) ,因为 \(x'\) 其实可能有不止一个 \(d\) 这个因子。

这个题告诉我们,与约数有关的题,如果不能分解质因数,可以考虑是否能直接求 \(\gcd\) 再推式子做,因为求 \(\gcd\) 的复杂度远远小于分解质因数的复杂度。

讲个笑话,我代码里面把 \(x^2\) 写成了 x ^ 2 ,调了巨久。

T661221 买买题(muhammad)

题意:给定 \(a,b,p\),求在 \([1,x]\) 中有多少 \(n\),满足:

\[n*a^n\equiv b \pmod p \]

\(1\le x\le10^{12},1\le a,b,p \le 10^9,\varphi(p) \le10^7\),保证 \(p\)\(a\) 互质。

注意到 \(\varphi(p)\) 比较小,这启示我们可以对 \(a^n\pmod p\) 取值不同的那些数分别考虑。

于是枚举 \(n\in[0,\varphi(p))\) ,这样 \(a^n\) 这一项就固定了,只用考虑对于固定的 \(n\),有多少个 \(k\) 满足 \((n+k\varphi(p))a^n\equiv b\pmod p\) 即可。

简单整理一下式子有:\(k\varphi(p)\equiv b*a^{\varphi(p)-n}-n\pmod p\)

利用可除性的结论,如果有解,可以得到 $k\pmod {{p\over\gcd(\varphi(p),p)}} $ 的唯一解,总共有 \(x - k \over {p\over\gcd(\varphi(p),p)}\) 个。

继续推式子有希望做到 \(O(\log p)\) 。比较麻烦。

这道题启示我们,可以通过枚举某个未知量简化问题。

AT_agc063_d Many CRT - 洛谷

给定正整数 \(N,\ a,\ b,\ c,\ d\)

请判断是否存在非负整数 \(x\),使得对于所有 \(k=0,1,\ldots,N-1\),都有 \(x\equiv a+kb\pmod{c+kd}\)。如果存在,请输出所有满足条件的 \(x\) 中最小的一个对 \(998244353\) 取模的结果;如果不存在,请输出 \(-1\)

  • \(2\leq N\leq 10^6\)\(1\leq a,b,c,d\leq 10^6\)

瞎口胡一下。

这是一个解特殊的同余方程组的题目。

首先模数不一定互质,所以普通 CRT 有问题。

因为 exCRT 过程中需要一直用 exgcd,这导致无法在过程中让过程量对 \(998244353\) 取模,会爆 long long,我认为可能不太好做。

发现这个相对于普通同余方程,有一定的特殊性质,考虑从这里突破。

解同余方程组时,如果只有模数是不同,其它数都是定值,就会比较好做。考虑转化一下题目给出的式子。

\[\begin{aligned} x&\equiv a+kb&\pmod{c+kd}\\ xd&\equiv ad+kbd&\pmod{c+kd}\\ xd&\equiv ad+kbd - (cb+kdb)&\pmod{c+kd}\\ xd&\equiv ad - cb&\pmod{c+kd}\\ \end{aligned} \]

\(M=\prod_k (c+kd)\),则此时只用把 \(d\) 除过去就得到了 \(x\)感觉这一步是小学奥数?

首先根据可除性,把 \(d\)\(M\) 的公因子除掉,这时候顺便还把无解判了,设 \(d\) 去掉除公因子后是 \(d'\),只用把 \(d'\) 的逆元乘过去即可。

求公因子这一步虽然使用欧几里得算法会爆精,但是可以直接使用分解质因数,这是可以接受的。

发现乘逆元这一步其实还不好搞,这一步比较人类智慧:

枚举 \(y\),当满足 \(ad - cb + yM'\)\(d'\) 这个因子的时候,把 \(d'\) 除过去,就能得到 \(x\)

也就是要求满足 \(ad - cb + yM' \equiv 0 \pmod {b'}\) 的最小的 \(y\),这时候可以先把 \(M'\)\(b'\) 取模,之后得到 \(y\) 是容易的。

这个题告诉我们,同余方程组不一定要用 CRT 来求,也体现出了 exgcd 和 exCRT 无法显性地得到一个答案的表达式这个劣势。

AT_agc050_e Three Traffic Lights

详见:https://www.cnblogs.com/water-flower/p/19249590

P6610 Code+#7 同余方程 - 洛谷

\(n\) 组询问,每组询问给出 \(x,p\) ,统计满足下面这个同余方程的 \(a,b\) 组数。

\[a^2+b^2\equiv x \pmod p \]

保证 \(\mu(p) \neq 0\) ,并且 \(p\) 是奇数。\(n\le1e5,x,p\le1e7\)

\(p\) 的这个限制暗示我们可以先考虑 \(p\) 是奇素数的情况,然后用 CRT 合并。

然后直接打表瞪出 p 是奇素数时候的结论,而且这个题的结论应该比较好瞪出来(

稍微转化一下题意:令 \(c=a^2,d = b^2\),则 \(c+d \equiv x\),直接对合法 \(c,d\) 进行统计。条件变成 \(c+d \equiv x\) ,并且 \(c,d\) 都是二次剩余或 0。

如果 \(c\) 是二次剩余,那么一个 \(c\) 对应两个 \(a\)\(d\) 也同理。

这时候,我们可以认为 \(c\) 是二次剩余就照成 2 的贡献,是 0 照成 1 的贡献,不是二次剩余照成 0 的贡献。

然后就可以直接对满足 \(c+d \equiv x\) 这一个条件的 \(c,d\) 把它们的贡献乘起来即可。

发现这个贡献的表达式,恰好就是勒让德符号 \(\left(\dfrac{c}{p}\right)\) + 1!这是一个非常重要的观察。(反正我就是被卡在这里了)

所以一组 \(c,d\) 的贡献就是 \((c^{p-1\over2}\bmod p + 1)(d^{p-1\over 2}\bmod p + 1)\)。(注意模 \(p\) 在括号内部!这只是用欧拉准则在描述贡献!)

答案即为:

\[\sum_{c=0}^{p-1}(c^{p-1\over2}\bmod p + 1)((x-c)^{p-1\over 2} \bmod p+ 1) \]

接下来就是按照套路化式子了!

\[\begin{aligned} &\sum_{c=0}^{p-1}(c^{p-1\over2}\bmod p + 1)((x-c)^{p-1\over 2} \bmod p+ 1) \\=& \sum_{c=1}^{p-1}(c^{p-1\over2}\times (x-c)^{p-1\over 2} \bmod p)+\sum_{c=0}^{p-1}c^{p-1\over2}\bmod p + \sum_{c=0}^{p-1}(x-c)^{p-1\over2}\bmod p + \sum_{c=0}^{p-1}1 \end{aligned} \]

根据二次剩余的结论,在 \(p\) 的剩余系中,二次剩余的数量等于非二次剩余的数量,所以 \(\sum_{c=0}^{p-1}c^{p-1\over2}\bmod p=\sum_{c=0}^{p-1}(x-c)^{p-1\over2}\bmod p = 0\),于是第二三个和式就没了。第四个和式等于 \(p\),于是现在只有第一项比较棘手,考虑继续化式子。注意第一项中 c 等于 0 的那项为 0,被提前判掉了,这是为了让后面推导方便。是哪个小可爱一开始搞忘判 0 导致做不出来我不说

\[\begin{aligned} &c^{p-1\over2}\times (x-c)^{p-1\over 2} \bmod p \\=&c^{p-1\over2}\sum_{k=0}^{p-1\over2}x^k(-1)^{{p-1\over2}-k}c^{p-1\over2}c^{-k}\binom{p-1}{k} \bmod p \\=&c^{p-1\over2}c^{p-1\over2}\sum_{k=0}^{p-1\over2}(xc^{-1})^k(-1)^{{p-1\over2}-k}\binom{p-1}{k}\bmod p \\=&(xc^{-1}-1)^{p-1\over2}\bmod p \end{aligned} \]

一下子变简洁了许多。这里有组合意义证明,但过于不自然,这里不讲。

对于 \(\sum_{c=1}^{p-1}(xc^{-1}-1)^{p-1\over2}\bmod p\)\(c\) 的取值在 \([1, p-1]\) ,根据质数下逆元与数一一对应的性质,\(c^{-1}\in[1,p-1]\),因为 \(p\) 是质数,类似于费马小定理的证明,可知 \(xc^{-1}\in[1,p-1]\) ,所以 \(xc^{-1}-1\in[0,p-2]\)。因为 \(\sum_{c=0}^{p-1}c^{p-1\over2}\bmod p = 0\),容易得到 \(\sum_{c=1}^{p-1}(xc^{-1}-1)^{p-1\over2}\bmod p=0-(p-1)^{p-1\over 2}\bmod p\)

细心的同学会发现 \(x = 0\) 的时候答案需要特判,是 \((p-1)(-1)^{p-1\over2}\)

现在对于一个奇素数的答案已经可以 \(O(1)\) 计算了,考虑如何 CRT 合并。

发现根据 CRT 的那个公式,每个奇素数取模意义下,一组合法的 \(a,b\),都一一对应原模数下的一组合法 \(a,b\)。(经典套路)

代码极短。

这个题的剩余系思想,和数论下的计数转贡献的思想非常的牛逼,最后还运用了 CRT 一一对应的性质,好题难得呀。

完结撒花 ~

P4000 斐波那契数列 - 洛谷

题意:求斐波那契数列的第 n 项对 p 取模,但是 \(n\le10^{3e7},p\le2^{31}\).

斐波那契数列通项公式:\(F[n]=\dfrac{\sqrt{5}}{5}\left[\left(\frac{1+\sqrt{5}}{2}\right)^{n}-\left(\frac{1-\sqrt{5}}{2}\right)^{n}\right]\),(详见我生成函数的博客)

首先因为 \(p\) 的剩余系里面总共就 \(p\) 个数,这个题里面, \(5\) 可能没有二次剩余,所有要把 \(\sqrt 5\) 当成虚根,但这样也只有 \(O(p^2)\) 个本质不同的数。这说明 \(\left(\frac{1+\sqrt{5}}{2}\right)^{n}\) 肯定是有循环的,并且循环节大小还与 \(n\) 无关。只要能快速确定循环节大小即可解决问题。

不过如果暴力遍历 \(\left(\frac{1+\sqrt{5}}{2}\right)^{n}\) 形成的环肯定还是爆炸。

这时候出现了两种主流做法:

第一种是根据生日悖论,

根据生日悖论,只要随机撒点,期望只需要 \(\sqrt {\pi(p)}\) 次就找到两个对 \(p\) 取模相同的 \(\left(\frac{1+\sqrt{5}}{2}\right)^{k}\) 两个 \(k\),这里 \(\pi(p)\) 是模 \(p\) 的循环节大小。然后有一个结论是斐波那契数列的循环节大小是 \(O(p)\) 的,证明应该还是得用到第二种方法的推导,不过可以凭借信仰,相信这个循环节并不大。于是直接开个 map,随机化找循环节即可。

第二种是大力推导 p 的循环节关于 p 的公式,

参考:题解 P4000 【斐波那契数列】 - 洛谷专栏

\(u = \left(\frac{1+\sqrt{5}}{2}\right)^{n},v=\left(\frac{1-\sqrt{5}}{2}\right)^{n}\).

  1. \(5\) 在模 \(P\) 意义下有二次剩余

循环节是 \(\varphi(p)\) 因子,不必多说。

  1. \(P\) 是质数

类似于二次剩余的 cipolla 算法地,可以得到 \((a+bi)^{p+1}\bmod p\) 是实数,那么至少 \((p+1)*\varphi(p)\) 是一个循环节,其实通过进一步的推导得到,\(2p+2\) 也是一个循环节,于是也很好做。

  1. P 是某个质数 \(p\) 的次幂,也就是 \(p^k\).

这个是最棘手的。

先来个引理,\(a\equiv 1\pmod p \Rightarrow a^{p^k}\equiv 1\pmod {p^{k+1}}\).

考虑数学归纳(呜呜呜,开始耍赖),考虑如何从 \(k\) 推到 \(k + 1\)

先转成不定方程的形式 \(a^{p^k} = mp^{k+1} + 1\),然后给两边同时 \(p\) 次方。

\[a^{p^kp} = (mp^{k+1}+1)^p \]

然后把右边对 \(p^{k+2}\) 取模。

按照套路,把右边二项式展开,然后把有 \(p^{k+2}\) 这个因子的那些项丢掉,然后惊人的发现,只有 \(1\) 这一项还活着。

于是有 \(a^{p^{k+1}} \equiv 1\pmod {p^{k+2}}\)

有了这个以后,\(P\) 的循环节大小就是 \(p\) 的循环节大小的 \(p^{k-1}\) 倍.

  1. P 的一般情况

直接把 P 分解质因数,对于每一个 \(p_i^{c_i}\),都能得到他的一个循环节,循环节的倍数还是循环节。

于是可以就出每个 \(p_i^{c_i}\) 的循环节长度,然后求 \(lcm\) 即可。

于是搞到了 P 的循环节的一般公式,做完了。

听说有人直接暴力卡常卡过了,挺佩服的。

这个题告诉了你,遇到神秘式子对 p 取模时,该如何得到它的对 p 的循环节,把问题的复杂度降到只与 p 有关。

[P7325 WC2021] 斐波那契 - 洛谷。这个题好像就是本题套上一个模数的可除性。没仔细看,或许是这样的。

CF1190F Tokitsukaze and Powers

简化题意:求满足以下条件的 \(x\) 的数量:

  1. \(x\in[0,m-1]\)
  2. \(x\bot m\)
  3. 不存在 \(e\) 使得 \(p^e\equiv x\pmod m\)

\(p,m\le10^{18}\),保证 \(m\) 是质数的幂。

还要输出 \(n\) 个可行的 \(x\)\(n\le5\times 10^5\)

如果 \(p,m\) 不互质,那么,根据可除性,第三个限制根本没有用,\(x\)\(\varphi(m)\) 个。

否则,可行的 \(x\) 的数量就是 \(\varphi(m) - \delta_mp\)

因为 \(m\) 是质数的幂,所以 \(m\) 是非常好分解质因数的,同样, \(\varphi\)\(\delta\) 可以通过 Pollard_Roll 分解质因数来求,所以判无解并不困难。

最大的问题在于如何快速得到一些可行的 \(x\)

首先,如果 \(m\) 很小时,比如 \(m\le 10^6\) ,这时候可以直接把所有 \(p^e\bmod m\) 全部跑出来,然后输出剩下那些与 \(m\) 互质的数。

如果 \(m\) 比较大,则还需要分讨一下。

  • \(m\) 有原根

先随机化抓一个 \(m\) 的原根 \(g\),再设 \(p \equiv g^a\),于是有:

\[p^e\equiv g^{ae} \]

再假设 \(x\equiv g^k\)

\(x\) 等于某个 \(p^e\) 当且仅当 \(k\equiv ae\pmod {\varphi(m)}\)

根据可除性(详见),\(k\) 只要没有 \(\gcd(a,\varphi(p))\) 这个因子即可。

于是随便抓 \(5\times10^5\) 个满足条件的 \(k\),输出 \(g^k\) 即可。

问题在于用 BSGS 求 \(a\) 会 TLE,考虑换个方法。

因为有 \(p^{\delta_mp}\equiv 1\)\(g^{\varphi(m)}\equiv 1\) ,又有 \(\delta_mp \mid \varphi(m)\)\(p\equiv g^a\),于是 \(\varphi(m)\mid a\times\delta_mp\)

于是 \(a\times\delta_mp = c\times \varphi(m)\)

\(c = 1\),那么 \(\dfrac{\varphi(m)}{\delta_mp}\) 就是一个合法的 \(a\)

(ps:\(m\) 的原根 \(g\) 有很多个,但是这里的 \(a\) 的表达式竟然与 \(g\) 无关!不过从 \(n\) 此剩余的角度来说,其实解的数量是对得上的,所以不奇怪。这也说明了原根可以用 \(n\) 次剩余解出来)

这一步有一个弱化版:P5605 小 A 与两位神仙 - 洛谷。就是要求计算 \(a\),然后用可除性判一下是否有解即可。

  • \(m\) 无原根

也就是说 \(m\)\(2\) 的次幂。

一个重要发现是,如果 \(m > 10^6\)合法的 \(x\) 数量远远大于 \(5\times10^5\),所以可以只思考如何找一个 \(x\) 合法的合适的充分条件即可。

可以对 \(p\bmod 4\) 进行分讨。

  • \(p\bmod 4 = 1\)

那么 \(p^e\bmod 4 = 1\)

只抓 \(5\times10^5\)\(x\bmod 4 = 3\)\(x\) 即可。

  • \(p\bmod 4 = 3\)

发现 \(p^e\bmod 4\)\(1,3\) 交替的。这一步是最难的。

首先 \(2\) 的次幂是没有原根的。每个数的阶又一定是 \(\varphi(p)\) 的因子,这说明每个数的阶最大只能是 \(\varphi(p)/2\) 。(注意此时偶数没有阶)

然后 \(p^e\bmod 4\)\(1,3\) 交替,所以 \(p^e\bmod 4\) 等于 \(1\) 的最多只有 \(\varphi(p)/4\) 个,也就是最多只包含 \(\bmod 4 = 1\) 这个集合中一半的数量。

打表可以发现,无论 \(m\) 怎么变,\(5\) 的阶永远是 \(\varphi(p)/2\)。要证明这个结论需要升幂引理或数学归纳法。

这说明,对于每个\(\bmod 4 = 1\) 的数,都同余一个 \(5\) 的次幂。

所以可以认为 \(5\) 是一个原根的替代品,再用有原根的方法做即可。

并且用上述方法至少可以求出 \(\varphi(p)/4\) 个合法的 \(x\)

完结撒花 ~

余数(来自联考)

做出这个题你数论上这部分就通关啦!

题意:给定 \(k,m\),询问 \(x^k\pmod m\),有多少种不同的取值。\(k,m\) 巨大无比,只给出了 \(k,m\) 的因式分解式,具体来说 \(k,m\) 都有 \(2e5\) 个不大于 \(1e7\) 的因子,每个因子的次幂不大于 \(1e9\)。因为笔者不会做 \(m\) 有 2 的因子的情况,所以 m 没有 2 这个因子。

\(x^k\equiv n\pmod m\)

首先 \(x=0,n=0\) 是一组合法解,这个最后在答案上加 1 即可,现在只求 \(x,n\) 都是正整数的情况。

按照套路分讨 m。

  • m 是奇质数

那这就是个普通的 k 次剩余。

找到 m 的原根 g,于是设 \(x=g^a,n=g^b\),于是 \(ak\equiv b\pmod {\varphi(p)}\) ,根据可除性,有 \(\dfrac{\varphi(p)}{\gcd(\varphi(p),k)}\) 个数有解。

  • m 是奇质数的幂

\(m=p^c\) ,p 是质数。

\(x\) 要么与 \(m\) 互质,要么 \(\gcd(x,m)=p^h,h\le c\),于是考虑枚举这个 \(h\).

\(\gcd(x^k,m)= p^d\)

根据上面的定义容易得到 \(d=\min(kh,c)\).

根据可除性,\(n\) 必须要有 \(p^d\) 这个因子,否则无解。

可以大胆地做个除法,可以得到答案就是满足 \(x^k/p^d\equiv n'\pmod{p^{c-d}}\)\(n'\) 的数量。

假设 \(x=g^a,p^d= g^b,n'=g^e\),于是有 \(g^{ak-b}\equiv g^e\pmod {p^{c-d}}\).

按照套路化式子能得到答案是 \(\varphi(p^{c-d})/\gcd(\varphi(p^{c-d}),k)\)

写答案的式子:

\[\sum_{h=0}^{c}\frac{\varphi(p^{c-\min(kh,c)})}{\gcd(\varphi(p^{c-\min(kh,c)}),k)} \]

首先,\(\varphi(p^k)=p^{k-1}(p-1)\),于是继续化式子:

\[\sum_{h=0}^{c}\frac{p^{c-\min(kh,c)-1}(p-1)}{\gcd(p^{c-\min(kh,c)-1}(p-1),k)} \]

然后因为 \(p^{c-\min(kh,c)-1}\)\(p-1\) 互质(显然),可以把 \(\gcd\) 拆了:

\[\sum_{h=0}^{c}\frac{p^{c-\min(kh,c)-1}(p-1)}{\gcd(p^{c-\min(kh,c)-1},k)\times \gcd(p-1,k)} \]

可以预处理出 k 中 p 的因子个数,假设 \(k = a\times p^b\),于是 \(\gcd(p^{c-\min(kh,c)-1},k) = p^{\min(b,c-\min(kh,c)-1)}\)

然后再把无关项提出来:

\[\frac{(p-1)}{\gcd(p-1,k)}\sum_{h=0}^{c}\frac{p^{c-\min(kh,c)-1}}{p^{\min(b,c-\min(kh,c)-1)}} \]

这个求和符号里面,前面是一个等差数列,后面跟一段 1,把 min 拆了就可以算。我懒得化式子了。

  • m 是二的次幂

题面里说了,我不会推这个的式子,因为 \(2\) 的次幂没有原根。

但是可以打表观察发现,当 \(k\) 是偶数时,答案只是把上面式子里面的 \(p^{c-\min(kh,c)-1}\),全部变成 \(p^{c-\min(kh,c)-2}\) 即可,\(k\) 时奇数答案甚至不变。(这里认为 \(p=2\)

原因尚不明确,疑似需要升幂引理,欢迎大佬给出证明。

  • m 是一堆质数幂的乘积(一般情况)

\(m=\prod_ip_i^{c_i}\).

在每一个质数幂的合法解里面,各自选一个正整数解 \(n_i\),于是有:

\[\begin{aligned} x^k&\equiv n_1\pmod{p_1^{c_1}}\\ x^k&\equiv n_2\pmod{p_2^{c_2}}\\ &...\\ x^k&\equiv n_i\pmod{p_i^{c_i}} \end{aligned} \]

根据中国剩余定理的结论,这些同余方程恰好可以合并出在 \(\bmod \operatorname{lcm}_ip_i^{c_i}\) 的唯一解。这恰好是 \(\bmod m\)

反过来,一组满足 \(x^k\equiv n\pmod m\) 的合法 \(x,n\) 也恰好对应一个上面的同余方程。

这说明,任意一组 \(n_i\) 合法组合,都恰好对应上一个合法答案。

所以最终答案就是所有质数幂的解的数量乘起来。


被咕掉的题

小结&后记

数论最大的两个板块时模运算和因数质数,有时可以尝试一下一些小定理。遇到一些题没有思路可以试着打表或分解质因数,或者转成其他板块的知识来解决。

一些常见的 Trick:

  1. 数论与打表有着密不可分的关系,所以遇到神秘数论题,请不要抗拒打表。例如 T340361 Fermat-2(这是一个比较极端的打表例子,仅供参考),P3951 小凯的疑惑 - 洛谷
  2. 先考虑模数是奇质数时怎么做,再考虑奇质数的次幂怎么做,再考虑一堆奇质数乘起来怎么做,再考虑 \(2\) 怎么做,在考虑 \(2\) 的次幂怎么做,最后考虑一般情况。这几步里面,一般来说是有几步很简单,有几步会较为困难,从某一步推到下一步的时候,要找到上一步的方法不能用到这一步的原因,针对这个原因打补丁,也有时候需要换一个做法才走得通,这种时候不要害怕(比如 CRT 到 exCRT,就是直接换了个思路)。最后一步一般是用 CRT 把不同的模数下的值拼起来。这个是非常常见的数论做题思路。例如 P4000 斐波那契数列 - 洛谷余数(来自联考)P6610 Code+#7 同余方程 - 洛谷
  3. 要相信很多东西是有循环节的,最经典的应用就是拓展欧拉定理。但是要注意,有些时候有进入循环以前和循环节这两个部分。例如 P4621 BAKTERIJE - 洛谷P4000 斐波那契数列 - 洛谷
  4. 枚举某一个变量,使其固定,然后统计另一个变量的数量。例如 T661221 买买题(muhammad)
  5. 有一个用质数来状压的 Trick,有些时候只关注每个物品的选择次数(如果只有 0/1,应选择二进制装压),而不关心选择的顺序,考虑用一个质数来代表一个物品,用次幂来代表选择次数,这样一个整数就能唯一确定一个状态,一般用 1 代表空集。这时候 \(\gcd\)\(\min,or\) 这种东西比较有关系。
  6. 有些数论函数具有势能,比如 \(\gcd,\bmod\) 操作每次会导致当前数不变或至少减半;\(\varphi(\varphi(\varphi(...)))\) 这个东西只会嵌套 \(O(\log n)\) 此就会变成 1;\(\mu\) 只要有平方因子出现就会变成 0。
  7. 可以 dfs 出每个质数的指数。例如 PN 筛。
  8. 式子推不动了可以考虑转图论或 dp。莫反有时候可以转莫队,莫莫一家亲

一些没整理的东西,大多是因为属于非常偏数学的知识,在 OI 中很罕见的。虽然有些 OI 中很没用的东西也可能被我整理进来。比如一些特殊的数(费马数,卡迈克尔数,完全数,梅森数),一些定理(费马大定理),丢番图,连分数,SB 数(SB可能还是有用的,在这里可以看),高斯整数(数论版的虚数),还有一些与平方和有关的东西,升幂引理

特别强调升幂引理,虽然我没有整理,但是这玩意可以处理从质数到质数的幂这一步,所以是有用的,但是我没学会,所以没有写。

posted @ 2025-10-09 12:16  花子の水晶植轮daisuki  阅读(14)  评论(1)    收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js