【OI向】数论问题学习笔记
【OI向】数论问题学习笔记
数论,是一个重要的数学分支。
本文记录一些数论相关问题的学习笔记。
限于个人水平,文章内容可能存在纰漏,望指正。
解题报告
#1 COCI2020-2021#2 Euklid
#1 题意
对于正整数 \(a,b\) ,定义 \(R(a,b)= \begin{cases} R(b,a)&a<b\\ R(\left \lfloor \frac{a}{b} \right \rfloor ,b)& 1\lt b\le a \\ a&b=1 \end{cases}\)
给定正整数 \(g,h \left ( 1\le g\le2\times 10^5,2\le h\le2\times 10^5 \right )\) ,求正整数 \(a,b \left ( 1\le a,b\le 10^{18} \right )\) 使得 \(\gcd(a,b)=g,R(a,b)=h\) 。
可以证明一定有满足题意的 \(a,b\) ,若有多组解输出任意一组即可。
#1Sol
首先,我们不妨假设,\(x,y\) 为本题答案,即 \(x=ag,y=bg\) 。
\(\because\gcd(x, y)=g\)
那么,我们把 \(x,y\) 都约掉一个 \(g\) ,就剩下了 \(a,b\) 。
\(\therefore \gcd(a, b)=1\)
由题意, \(R(x,y)=h\)
那么,我们在这里假设 \(a<b\) 。
我们根据 \(R\) 的定义,可以将它变形:
\(R(x,y)=R(ag,bg)=R( \left \lfloor \frac{bg}{ag} \right \rfloor ,ag)= R( \left \lfloor \frac{b}{a} \right \rfloor ,ag)\)
又 \(\because R(x, y)=h\)
那么,我们根据定义逆推,可得,上一次肯定为 \(R(h,1)\) 。
再上一次,是 \(R(h,x)\) 使得 \(\left \lfloor \frac{x}{h} \right \rfloor =h\) 。
那么,显然此时 \(x\in \left [ h^{2} ,2h^{2} \right )\) ,即 \(R(h,1)=R(h,\left [ h^{2} ,2h^{2} \right ))\) 。
易得,\(R(h,1)=R(h,\left [ h^{2} ,2h^{2} \right ))=R(h,\left [ h^{3} ,2h^{3} \right ))=\cdots =R(h,\left [ h^{i} ,2h^{i} \right ))\)
\(\therefore x\in \left [ h^{i} ,2h^{i} \right )\) ,即 \(ag\in \left [ h^{i} ,2h^{i} \right )\) 。
又 \(\because\) 我们变形出来,\(R(x,y)= R( \left \lfloor \frac{b}{a} \right \rfloor ,ag)\) 。
\(\therefore\) 综上所述,\(R(x,y)= R( \left \lfloor \frac{b}{a} \right \rfloor ,ag)\) 且 \(ag\in \left [ h^{i} ,2h^{i} \right )\) 。
那么,本题就好做了,我们只要先把 \(a\) 确定,而 \(a\) 要满足 \(ag\in \left [ h^{i} ,2h^{i} \right )\) ,这个长度的范围为 \(h^{i}\) 。
如果,我们令范围的长度大于 \(g\) ,那么就一定有解了。(连续 \(g\) 个数里一定存在 \(g\) 的倍数,显然)
然后,我们只要先找一个 \(i\) ,使得 \(h^{i}>g\) ,然后在里面随便找找就能找到一个 \(g\) 的倍数,我们把这个 \(g\) 的倍数除以 \(g\) 就可以得到 \(a\) 。
接着,我们把 \(b\) 确定。
\(\because \left \lfloor \frac{b}{a} \right \rfloor =h\)
\(\therefore b=ah+k , k \in \left [0 ,a \right)\)
试一遍就行了,看看哪个互质。
#2 NOIP2017 小凯的疑惑
#2 题意
给定正整数 \(a,b,(1\le a,b\le 10^9)\) ,保证 \((a,b)=1\) ,问最大的 \(c\) 使得 \(ax+by=c\) 无非负整数解。
#2 Sol
法一:直接证明答案为 \(ab-a-b\) 。
首先证 \(ab-a-b\) 无解,反过来假设 \(ax+by=ab-a-b\) ,移项 \(a(x+1)+b(y+1)=ab\) 。
模 \(a\) 和 \(b\) 分别得到 \(a|(y+1)\) 和 \(b|(x+1)\) ,所以 \(y\ge a-1,x\ge b-1\) 。
那么 \(ax+by\ge a(b-1)+b(a-1)=2ab-a-b\ge ab-a-b\) ,矛盾!
然后证 \(c\ge ab-a-b+1\) 都有解,设 \(c+a+b=ka+m\ge ab+1(0\le m \le a-1)\) 。
若 \(m=0\) ,则 \(k\ge b+!\) ,不难验证 \((k-b-1)a+(a-1)b=c\) 。
若 \(m=1\) ,有 \(k\ge b\) 。
由于 \((a,b)=1\) ,存在 \(-(b-1)\le x_1 \le -1\) ,满足 \(y_1=\frac{(m-ax_1)}{b}\ge1\) 是整数。
取 \(x=k+x_1-1,y=y_1-1\) 可以验证 \(ax+by=c\) 。
法二:转化为求最大的 \(c\) 使得 \(ax+by=c\) 有解但 \(a\tilde{x}+b\tilde{y}=c-1\) 无解。
设 \((x^\prime,y^\prime)\) 为 \(ax^\prime+by^\prime=1\) 的解,且 \(x^\prime\) 取到最小的正值,此时 \(y^\prime=0\) ; \((x^{\prime\prime},y^{\prime\prime})\) 为另一组解,且 \(y^{\prime\prime}\) 取到最小的正值,此时 \(x^{\prime\prime}\lt 0\) 。
那么 \(a(x-x^\prime)+b(y-y^\prime)=c-1=a(x-x^{\prime\prime})+b(y-y^{\prime\prime})\) 。
所以要 \(x-x^\prime\lt 0\) 且 \(y-y^{\prime\prime}\lt0\) ,于是 \(x=x^\prime-1,y=y^{\prime\prime}-1\) 。
\((x^\prime,y^\prime),(x^{\prime\prime},y^{\prime\prime})\) 的求法是利用扩展欧几里得的通解公式调整。
#3 SDOI2010 古代猪文
#3 题意
给定整数 \(g,n \left ( 1\le g,n\le10^9 \right )\) ,计算 \(g^{ {\textstyle \sum_{k|n}} C_{n}^{k} } \mod 999911659\)
#3 Sol
设 \(p=999911659\) ,则原式为 \(g^{ {\textstyle \sum_{k|n}} C_{n}^{k} } \mod p\)
若 \(p|g\) ,则原式为 \(0\) ,否则, \((g,p)=1\)
则由欧拉定理的推论得 \(g^{ {\textstyle \sum_{k|n}} C_{n}^{k} } \equiv g^{ {\textstyle \sum_{k|n}} C_{n}^{k} \mod p-1 } \pmod{p}\)
由算数基本定理得, \(p-1\) 可分解质因数, \(p-1=2\cdot3\cdot4679\cdot35617\)
接着,我们可以枚举 \(n\) 的约数 \(k\) ,然后利用Lucas定理求 \(C_{n}^{k}\)
我们记 \(p_1=2,p_2=3,p_3=4679,p_4=35617\)
然后,分别计算出 \(\sum_{k|n} C_{n}^{k}\) 对 \(p_1,p_2,p_3,p_4\) 取模的结果,并记为 \(a_1,a_2,a_3,a_4\)
在计算中,对于 \(p_i\) ,我们先预处理出 \(p\) 以内的所有阶乘以及阶乘的模 \(p_i\) 的乘法逆元,就能计算按照 \(p\) 进制表示之后,每一位对应的组合数。
最后,我们用中国剩余定理求解线性方程组: \(\left\{\begin{matrix} x \equiv p_1 \pmod {a_1} \\ x \equiv p_2 \pmod {a_2} \\ x \equiv p_3 \pmod {a_3} \\ x \equiv p_4 \pmod {a_4} \end{matrix}\right.\)
即可得到 \(\sum_{k|n} C_{n}^{k} \mod {p-1}\) 的最小非负整数解 \(x\)
再用快速幂求 \(g^x\) 即可得到原问题的答案。
#4 AT1983 AGC001E BBQ Hard
#4 题意
有 \(n\) 个点对 \((a_i,b_i)\) ,要求 \(\sum_{i=1}^{n} \sum_{j=i+1}^{n}\binom{a_i+b_i+a_j+b_j}{a_i+a_j}\) 。
其中, \(2\le n \le 2\times 10^5 , 1\le a_i,b_i \le 2\times 10^3\)
#4 Sol
我们考虑,组合数的几何意义,即 \(\binom{a+b}{a}\) 是 \((0,0)\) 向右或向上走走到 \((a,b) 的路径条数\) 。
那么显然,题目所要求的也就转换为了从 \((-a_i,-b_i)\) 向右向上走到 \((a_j,b_j)\) 的路径条数,即我们只要解决一个多源多汇的最短路径计数问题。
那么做法也就很显然了,接下来只要再处理一下细节问题即可。
题外话:听rushcheyo说,这是一道让clj直呼妙不可言的题。
#5 LG4948 数列求和
题意
给定 \(n,a,k(n\le10^{18},a\le10^9,k\le2\times10^3)\) ,求 \(\sum_{i=1}^{n} i^ka^i\) 对 \(10^9+7\) 取模的结果。
#5 Sol
在本题中,我们可以对 \(a\) 的取值进行讨论。
若 \(a=1\) ,我们令 \(f(k)=\sum_{i=1}^{n} i^k\) 。
我们对上式进行扰动,则 \(f(k)=\sum_{i=1}^{n}(i+1)^k-(n+1)^k+1\) 。
接着,我们运用二项式定理展开上式。
\(\begin{equation} \begin{aligned} f(k)&=\sum_{i=1}^{n} \sum_{j=0}^{k}\binom{k}{j}i^j-(n+1)^k+1\\ &=\sum_{j=0}^{k}\binom{k}{j}\sum_{i=1}^{n} i^j-(n+1)^k+1\\ &=\sum_{j=0}^{k}\binom{k}{j}f(j)-(n+1)^k+1 \end{aligned} \end{equation}\)
\(\because \binom{k}{k} =1,\binom{k}{k-1}=k\)
\(\therefore f(k)=\sum_{j=0}^{k-1}\binom{k}{j}f(j)+f(k)-(n+1)^k+1\)
\(\Rightarrow \sum_{j=0}^{k-1}\binom{k}{j}f(j)-(n+1)^k+1=0\)
\(\Rightarrow \sum_{j=0}^{k-2}\binom{k}{j}f(j)+\binom{k}{k-1}f(j) -(n+1)^k+1=0\)
\(\Rightarrow \sum_{j=0}^{k-2}\binom{k}{j}f(j)+k\times f(k-1) -(n+1)^k+1=0\)
\(\Rightarrow f(k-1)=\frac{(n+1)^k-1-\sum_{j=0}^{k-2}\binom{k}{j}f(j)}{k}\)
我们将 \(k=k+1\) 代入上式。
\(f(k)=\frac{(n+1)^{k+1}-1-\sum_{j=0}^{k-1}\binom{k+1}{j}f(j)}{k+1}\)
特别地, \(f(0)=n\) 。
若 \(a\neq1\) ,我们令 \(f(k)=\sum_{i=1}^{n} i^ka^i\) 。
因为和先前的做法类似,这里就保留关键步骤并略去说明了。
\(\begin{equation} \begin{aligned} f(k) &=\sum_{i=1}^{n}(i+1)^ka^{i+1}-(n+1)^ka^{n+1}+a\\ &=a\sum_{j=0}^{k-1}\binom{k}{j}f(j)+a\times f(k)-(n+1)^ka^{n+1}+a\\ \end{aligned} \end{equation}\)
\(\Rightarrow f(k)=\frac{(n+1)^ka^{n+1}-a-a\sum_{j=0}^{k-1}\binom{k}{j}f(j) }{a-1}\)
特别地,\(f(0)=\sum_{i=1}^{n} a^i=\frac{a(a^n-1)}{a-1}\) 。
题外话:本题还有其他有趣的方法,大家可以尝试一下。