【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}\)

题外话:本题还有其他有趣的方法,大家可以尝试一下。

posted @ 2021-08-07 10:43  触情离殇haphyxlos  阅读(109)  评论(2编辑  收藏  举报