数学学习笔记5
底和顶
\(x\in \R\) ,有:
\(\lfloor x\rfloor = 小于等于 x 的最大整数\)
\(\lceil x\rceil = 大于等于 x 的最大整数\)
\(\{x\}\) 表示 \(x\) 的分数部分,$x=\lfloor x\rfloor+{x} $。
整值函数的图像
整值函数的基本性质
不妨设 \((x\in \R,n\in \Z)\),有:
- $\lfloor x\rfloor \le x,x\le \lceil x\rceil $
定义…
-
\(\lfloor x\rfloor =x \Leftrightarrow x\in \Z \Leftrightarrow \lceil x\rceil =x\)
-
\(\lceil x\rceil -1=\lfloor x\rfloor (x\notin \Z)\)
-
$\lfloor -x\rfloor =-\lceil x\rceil ,\lceil -x\rceil =-\lfloor x\rfloor $
底和顶可以相互转换。
- \(\lfloor x\rfloor =n\Leftrightarrow n\le x<n+1\)
- \(\lfloor x\rfloor =n\Leftrightarrow x-1< n\le x\)
- \(\lceil x\rceil =n\Leftrightarrow n-1< x\le n\)
- \(\lceil x\rceil =n\Leftrightarrow x\le n<x+1\)
可以将底和顶去掉或加上。
- \(\lfloor x+n\rfloor =\lfloor x\rfloor +n\)
我们可以将一个数移出或进入底和顶。
- \(x<n\Leftrightarrow \lfloor x\rfloor <n\)
- $n<x\Leftrightarrow n<\lceil x\rceil $
- \(x\le n \Leftrightarrow \lceil x\rceil \le n\)
- $n\le x \Leftrightarrow n\le \lfloor x\rfloor $
任意关于实数与整数的不等式都可以转化成带有底和顶的不等式。同理,我们可以将底或顶和整数的不等式去掉。
$\lfloor x+y\rfloor =\lfloor x\rfloor +\lfloor y\rfloor +\lfloor {x}+{y}\rfloor $
其中 \(0\le \lfloor \{x\}+\{y\}\rfloor< 2\)
对于数 \(2^m\le n<2^{m+1}\) ,在二进制下 \(n\) 有 \(m+1\) 位。\(m\le lg(n)< m+1\Leftrightarrow \lfloor lg(n) \rfloor =m\) ,有 \(\lfloor lg(n) \rfloor +1\) 位。通过另外一种推导可得 \(\lceil lg(n+1) \rceil\) ,这样对于 \(n=0\) 也成立。
- \(\lceil \lfloor x\rfloor \rceil =\lfloor x\rfloor\)
一类函数与整值函数
设 \(f(x)\) 为在一个实数区间的连续单增函数,且有
那么有结论:$\lfloor f(\lfloor x\rfloor )\rfloor=\lfloor f(x) \rfloor $。对顶也同样成立。
一个重要特例:若 \(m\in \Z, n\in \N^+\) ,则
如果我们令 \(m=0,n=10\) ,那么有 \(\lfloor \lfloor\lfloor x/10 \rfloor/10\rfloor/10\rfloor=\lfloor x/1000 \rfloor\) ,这意味着我们逐步抛弃各位数组得到的千位等于直接除以 1000 的商。
任意区间内整数个数
设 \(a,b\in \R\) ,则不同区间内的整数个数为:
- \([a..b)=\lceil b\rceil - \lceil a\rceil ,a\le b\)
- \((a..b]=\lfloor b\rfloor - \lfloor a\rfloor ,a\le b\)
- \([a..b]=\lfloor b\rfloor-\lceil a\rceil+1,a\le b\)
- \((a..b)=\lceil b\rceil -\lfloor a\rfloor -1 ,a< b\)
底和顶的和式
见书
一个实数 \(a\) 的谱是整数组成的一个无限多重集合:
没有两个谱是相等的,不妨设 \(a<b\) ,只需证明存在一个 \(m\) 使得 \(\lfloor ma \rfloor >\lfloor mb\rfloor , \lfloor ma \rfloor -\lfloor mb\rfloor\ge 1,m(a-b)\ge 1\) 即可,一定存在。
性质:$Spec(\sqrt2 ) , Spec(2+\sqrt 2 ) $ 是对 \(\N^+\) 的一个 划分 。
证明:只需证对于任意 \(n\) ,有两个件集合 \(\le n\) 的个数和等于 \(n\) 即可。
整齐恒等式:\(\frac{1}{\sqrt 2}+\frac{1}{2+\sqrt 2}=1\)
底和顶的递归式
约瑟夫问题,由于求解一般的递归式是困难的,我们考虑用另一种性质去描述它:
我们每次隔两个人处死一个人,并且每次都要重新标号。求出最后被处死人的新标号。类似于一个队列。
这样的形式说明我们的标号总是连续的,即我们每次将标号+=2 就可以得到将指针移动两格,这样每次处死的编号为 \(3k\) ,下两个数 \(3k+1,3k+2\) 被重新标号为 \(n+2k+1,n+2k+2\)。
我们知道:最后幸存的标号一定为 \(3n\) ,不过这不是我们想要的结果,我们希望还原出它之前的下标。
如果 \(N\le n\) 那么 \(N\) 是初始编号,反之,\(N\) 一定存在一个之前编号,考虑求出这个编号。
设 \(N=3n\),杀死第 \(k\) 个人的标号为 \(3k\) ,后两个人的标号 \(3k+1\gets n+2k+1,3k+2\gets n+2k+2\) ,设 \(N=n+2k+w,w\in [1,2]\),那么 \(N\) 之前的编号 \(3k+w=k+N-n\) ,而 $k=\lfloor \frac{N-n-1}{2}\rfloor $,于是我们可以递归迭代求解。
如果我们令 \(D=3n+1-N\) 来替换 \(N\) 的话,相当于改变编号顺序,则有:
$3n+1-D'=2n+1-D+\lfloor \frac{2n-D'}{2}\rfloor =3n+1-(\lceil \frac{3D}{2}\rceil ) $
\(D'=\lceil \frac{3D}{2}\rceil\),最后 \(J_3(n)=3n+1-D\)。
进一步地,我们可以将这个式子推广到 \(J_q\) ,易验证 \(J_2(n)=2(2^m+l)+1-2^{m+1}=2l+1\) ,这十分成功。
**mod:二元运算 **
定义及性质
当 \(n,m\in \N^+\) ,\(n\) 除 \(m\) 的商为 $\lfloor \frac{n}{m}\rfloor $ ,我们记余数为 \(n\bmod m\),有基本公式:
事实上,我们可以将 \(mod\) 推广到负整数甚至是任意实数。
其中 \(y\) 称为 模(modulus) 。
几何意义:当 \(x,y\in \R^+\) ,可以想象一个周长为 \(y\) 的圆,圆上的点被赋予了 \([0,y)\) 中的实数。如果我们从 0 出发,绕着圆行走 \(x\) 的距离,我们最后就停在 \(x\bmod y\),且行走时遇到 \(0\) 的次数为 $\lfloor \frac{x}{y}\rfloor $
当 \(x,y\) 有负数时,我们需要仔细:
注意到 \(x\bmod y\) 的值都介于 \(0\) 到 \(y\) 之间。
特殊地,我们规定:
这样可以使 \(x\bmod y\) 与 \(x\) 始终相差一个 \(x\) 的倍数。
我们用底函数定义了 \(\bmod\) ,考虑再用顶函数定义一个像为:
几何意义:类似,考虑圆的结构,就相当于走了 \(x\) 的距离后,要回到起点 \(0\) 还需要走的距离。
\(\bmod\) 的性质:
- \(c(x\bmod y)=cx\bmod cy\)
- \((x+y)\bmod m=(x\bmod m+y\bmod m)\bmod m\)
- \((xy)\bmod m=(x\bmod m\times y\bmod m)\bmod m\)
应用
给定 \(N\) 个物品和 \(M\) 个组,物品之间本质相同,要求把每个物品分配到某一个组里,使得组内的物品个数递减排序,且任意两个相邻的组时间的物品个数相差不超过 \(1\) ,求每组该分配多少个物品。
一个显然的思路:我们可以将物品一个一个地分配,每次找一个个数最少的组插入,归纳知这是正确的。
通过观察发现,将问题看成一个矩阵,则长的列有 $\lceil \frac{n}{m}\rceil $ 个物品,短的列有 \(\lfloor \frac{n}{m}\rfloor\) 个物品,共有 \(n\bmod m\) 个长列,\(n~\text{mumble}~m\) 个短列。这是一个可行解。
另一种思路是,我们知道第一组该放 $\lceil \frac{n}{m} \rceil $ 个物品,我们令 \(n'=n-\lceil \frac{n}{m} \rceil,m'=m-1\) ,递归地去放这写物品,所得到的答案是相同的,尽管我们的除数一直在发生变化。
为什么呢?我们设 \(n=qm+r,q=\lfloor \frac{n}{m}\rfloor ,r=n\bmod m\) ,当 \(r=0\) 时,\(n=qm\) ,下一次 \(n'=qm',n'=n-q,m'=m-1\),显然成立;当 \(r\not= 0\) 时,\(n'=qm'+r-1,n'=n-q-1,m'=m-1\) ,由于 \(q\) 是不变的,于是得出前 \(r\) 组的物品个数为 \(q+1\) ,接下来的 \(m-r\) 组的物品个数为 \(q\)。
对于第 \(k\) 组,它的物品个数为 $\lfloor \frac{n-k+1}{m}\rfloor $ ,因为对于 \(k\le r\) 的个数为 \(q+1\) ,\(r<k\le m\) 的个数为 \(q\)。
这样一来,我们可以写出一个恒等式,他表示将 \(n\) 分成 \(m\) 按照非增次序排列尽可能相等的部分的划分:
当 \(m=2\) 时有 $n=\lceil \frac{n}{2} \rceil +\lfloor \frac{n}{2}\rfloor $
如果用 $\lfloor mx\rfloor $ 替换 \(n\) ,并利用整值函数的性质去掉内部的底可得:
底和顶的和式
机械的方法:引入一个新的变量来规避底和顶。
$\sum_{0\le k<n} \lfloor \sqrt k\rfloor $
更多的技巧见:click
一个显然的思路是按照 $\lfloor \sqrt k\rfloor $ 分组,并统计个数,这样能得到正确答案(与整除分块类似),不过我们更偏向于机械的去做。
令 $a=\lfloor \sqrt n\rfloor $
求 \(\sum_{1\le n\le 1000}[^3\sqrt n\mid n]\)
求 \(\sum_{0\le k<n} \frac{nk+x}{m},n\in \Z,m\in N^+\)
注意到这个式子有三项,于是我们可以对这三项分别计算,待定系数法推测最后的形式是 \(a\lfloor \frac{x}{a}\rfloor +bn+c\)
先考虑一个问题:考虑 \(0\bmod m,n\bmod m,2n\bmod m,...,(m-1)n\bmod m\) 的数列,几何意义是一个周长为 \(m\) 的时钟,每次偏移相同的弧度 \(n\) 。易证数列的值为 \(0,d,2d,...,m-d\) ,每个数共出现 \(d\) 次\((其中 d=\gcd(m,n))\)。
于是
注意封闭形式中 \(m,n\) 是对称的,于是这个和式具有 \(n,m\) 的互反性。
Number Theory
整除
如果 $m>0 $ ,且 \(\frac{n}{m}\) 的值是一个整数,那么 \(m\mid n\)
注意整除和倍数不完全相同。
欧几里得算法:
- \(k\mid m,k\mid n\Leftrightarrow k\mid \gcd(m,n)\)
如果条件成立的话,那么 \(k\mid mm'+nn'=\gcd(n,m)\)
- 因子求和:\(\sum_{m\mid n} a_m=\sum_{m\mid n} a_{n/m},n\in N^+\)
- 二重因子求和:\(\sum_{m\mid n}\sum_{k\mid m}a_{k,m}=\sum_{k\mid n}\sum_{l\mid (n/k)}a_{k,kl}\)
素数
如果一个正整数 \(p\) 恰好有两个因子 \(1,p\) ,那么这个数称为素数,每个大于 \(1\) 的数要不是素数要不是合数。
算术基本定理:\(n=p_1...p_m=\Pi_{k=1}^mp_k,p_1\le ...\le p_m\)
- 证明:归纳法,若 \(n=p_1...p_m=q_1...q_k\) ,若 \(p_1=q_1\) 归纳成立,否则不妨设 \(p_1<q_1\) ,因为 \(ap_1+bq_1=1\) ,所以 \(ap_1q_2..q_k+bq_1..q_k=q_2..q_k\) ,此时 \(p_1\mid 左边,但 \nmid 右边\) ,与假设矛盾,命题得证。
我们将 \(<n_2,n_3,n_5,...>\) 看成 \(n\in N^+\) 的数系,有如下性质:
- \(k=mn\Leftrightarrow k_p=m_p+n_p,\forall p\)
- \(m\mid n \Leftrightarrow m_p\le n_p,\forall p\)
- \(k=\gcd(n,m)\Leftrightarrow k_p=\min(m_p,n_p),\forall p\)
- \(k=lcm(n,m)\Leftrightarrow k_p=\max(m_p,n_p),\forall p\)
如果 \(p\mid mn\) ,那么根据唯一分解定理,\(p\mid m或 p\mid n\) ,因为素数是不可分裂的,它必定整除其中一者。
素数的个数
有无穷多个素数
- 证明:反正法,假如已知有限个素数为 \(2,3,5..,p_k\) ,考虑数 \(n=2\times 3\times 5\times ...\times p_k+1\),显然 \(\forall k,p_k\nmid n\) ,所以必定有一个 $P\mid n $ 或 \(n\) 本身是一个素数,与假设矛盾。
欧几里得数 \(e_n=e_1e_2...e_{n-1}+1,n\ge 1\)
虽然 \(e_n\) 不一定是素数,不过对于任意 \(m<n,\gcd(e_m,e_n)=1\) ,即 \(e\) 两两互素。
- 证明:因为 \(\gcd(e_m,e_n)=\gcd(e_n\bmod e_m,e_m)=\gcd(1,e_m)=1\)
如果我们假设 \(q_i\) 是 \(e_i\) 的最小质因数,那么 \(q_1,q_2,..,\) 互不相同,于是我们得到了一个无穷多个素数的序列。
梅森数: \(2^p-1\) ,如果 \(p\) 是合数的话,那么 \(2^n-1\) 一定不可能素数(平方差公式展开可证)。
记不超过 \(n\) 的素数个数为 \(\pi(n)\),则 \(\pi(n)\sim \frac{n}{ln(n)}\)。对于一个随机的整数 \(n\) ,它是素数的概率为 \(\frac{1}{ln(n)}\)
孪生素数: \(p,p+2\)
阶乘
组合意义是 \(n\) 个小球的排列数。
如果我们给定 \(p\) ,我们相求 \(n!\) 分解中 \(p\) 的指数,即能整除 \(n\) 的 \(p\) 的最大幂,这该怎么办呢?
不妨先考虑 \(p=2\),我们可以对每个 \(p\) 的幂统计 \(1\sim n\) 中有多少个数能被 \(p\) 整除,总和就是答案!
$h_2(n!)=\sum_{k\ge 1}\lfloor \frac{n}{2^k}\rfloor $ ,可以发现很多项都是 \(0\) ,所以 \(k\in[1,\lfloor lg(n)\rfloor ]\) ,这可以由底的不等式得到。
进一步的,我们可以写出 \(n\) 的二进制 \((101011)_2\) ,发现相当于每次右移并累加答案(根据整值函数的性质)。
最终整理得:\(h_2(n!)=n-popcount(n)\) ,对于任意 \(p\) ,有上界 \(h_p(n!)=\frac{n}{p-1}\)
互素
当 \(\gcd(m,n)=1\) 时,整数 \(m,n\) 没有公共的素因子,我们就称它是互素的。
- \(d=\gcd(m,n),\gcd(m/d,n/d)=1\)
- \(k\gcd(m,n)=\gcd(km,kn)\)
- \(\gcd(m,n)=1\Leftrightarrow \min(m_p,n_p)=0,\forall p\)
- \(\gcd(m,n)=1\Leftrightarrow m_pn_p=0,\forall p\)
- \(\gcd(k,m)=1,\gcd(k,n)=1\Leftrightarrow \gcd(k,mn)=1\)
Stern-Brocot 树
Stern-Brocot 树是一种不重不漏列举有理数(最简分数)的方式,构造如下:
一开始,序列中有两个数 \(\frac{0}{1},\frac{1}{0}\) ,接下来,进行以下操作:在两个相邻分数 \(\frac{m}{n},\frac{m'}{n'}\) 之间插入中位分数 \(\frac{m+m'}{n+n'}\),无限构造下去的序列满足两个性质:
- 所得到的分数都是最简分数,即 \(\gcd(m,n)=1\)
- 所得到的分数不重不漏,换句话说,任意非负有理数在这个集合中恰出现一次。
- 序列单调递增
因为对于 \(\frac{m}{n}<\frac{m'}{n'}\) ,一定有 \(\frac{m}{n}<\frac{m+m'}{n+n'}<\frac{m'}{n'}\) ,作差可得。于是我们得到的分数是不重的。
性质:对于序列中相邻两个分数 \(\frac{m}{n},\frac{m'}{n'}\) ,一定有 \(m'n-mn'=1\) ,归纳法可证。于是根据裴蜀定理易得:\(\gcd(m,n)=\gcd(m',n')=1\)。
最后需要证明任意有理数 \(\frac{a}{b}\) 都能被构造出来,类似二分的方法,假设 \(\frac{m}{n} <\frac{a}{b}<\frac{m'}{n'}\) ,一定有 \(an-bm\ge 1,bm'-an'\ge 1\) ,将不等式合并可得 \((m'+n')(an-bm)+(m+n)(bm'-an')\ge m+n+m'+n'\) ,整理可得 \(a+b\ge m+n+m'+n'\) ,右式随着操作次数的增加而增肌,于是至多在 \(a+b\) 步之后被找到。
如果将序列按照二叉搜索树的性质仍到一棵树上,那么有很多性质:一个数是由祖先中最大小于它的数和最小大于它的数(前驱和后继)的中位分数,关于根中心对称的两个点互为倒数。
定义法里级数 \(F_n\) 为所有在 \([0,1]\) 范围内且分母 \(\le n\) 的最简分数集合,\(F_n\) 可以由 \(F_{n-1}\) 不断插入分母为 \(n\) 的数得到。它比 Stern-Borcot树 有着简单但优美的性质:
-
\(0\le m\le n,(n,m)=1\)
-
分母为 \(n\) 的有理数个数为 \(\varphi(n)\)
-
\(\frac{m}{n},\frac{m'}{n'}\) 是两个相邻的分数,有 \(m'n-mn'=1\)
-
\(\frac{b}{a},\frac{m}{n}\) ,其中 \(a,b\) 是对应不定方程 \(ma-nb=1\) 的一组解。
数论
整数的离散型:\(\forall x,y\in \Z,x<y \Leftrightarrow x+1\le y\)。
整数运算的封闭性:和差积仍为整数。
对于 \(x\in \Z\) ,若 \(x=2k+1,k\in \Z\) ,则 \(x\) 是奇数,否则是偶数。
奇+-奇=偶,偶+-奇=奇,奇×奇=奇,奇×偶=偶。
连续 \(m\) 个整数的乘积,一定能被 $1\sim m $ 整除(抽屉原理)。
质数: 若一个正整数无法被除了 \(1\) 和自身的任何自然数整除,则称该数为素数,否则称为合数。
质数的分布比较系数,对于一个较大的整数 \(N\) ,不超过 \(N\) 的质数大概有 \(\frac{N}{lnN}\) 个,即每 \(lnN\) 个数才会有一个质数出现。
质因子次数符号: \(n\) 当中质因数 \(p\) 的次数记作 \(v_p(n)\) 。即 \(p^{v_p(n)}\mid n\and p^{v_p(n)+1}\nmid n\) 。
各位数字之和符号: \(n\) 在 \(p\) 进制下各位数字之和为 \(s_p(n)\)。
质数的判定
试除法:若一个正整数 \(n\) 是合数,则存在 \(m|n\) ,使得 \(2\le m\le \sqrt n\) 。
证明:反证法,假设不成立,一定有 \(m|n,m>\sqrt n\) ,易发现 \(2\le n/m \le \sqrt n\) 。矛盾,假设不成立。
可以依次扫描 \(2\sim \sqrt n\) ,检查每个数能否整除 \(n\) ,如果范围内不存在这样数,则 \(n\) 是质数,反之是合数。
质数的筛选
- 给定 \(n\) ,求出 \(1\sim n\) 之间的所有质数。
Eratosthenes 筛法
想法:对于整数 \(x\) 的任意倍数 \(2x,3x,...\) 都不是质数。
我们可以从 \(2\) 开始,从小到大枚举每个数 \(x\) ,把它的倍数 \(2x,3x,..,\lfloor \frac{n}{x}\rfloor x\) 标记为合数。当扫描到一个数,若它尚未被标记,则它不能被 \(2\sim x-1\) 整除,说明它是质数。
实际上,\(<x^2\) 的 \(x\) 的倍数在扫描更小的数时就已经被标记过了,因此可以优化,只需将 \(x^2,(x+1)x,..,\lfloor \frac{n}{x}\rfloor x\) 标记为合数即可。
复杂度 \(O(\sum_p\frac{n}{p})=O(n\log\log n)\)
线性筛法
考虑继续优化,让 \(x\) 只被它的最小质因子 \(v(x)\) 标记到,即对于数 \(i\) ,我们标记所有 \(x=v(x)i\) 的数,易发现这样有 \(v(x)\le v(i),v(x)\in P\) ,于是算法流程为:
- 从小到大枚举 \(2\sim n\)
- 如果 \(v(i)=i\) ,说明 \(i\) 是质数,将它保存下来。
- 扫描不大于 \(v(i)\) 的每个质数 \(p\) ,令 \(v[i\times p]=p\) ,也就是在 \(i\) 的基础上累积上一个 \(p\) ,因为 \(p\le v(i)\) ,所以 \(p\) 就是 \(i\times p\) 的最小质因子。
每个合数 \(i\times p\) 只会在枚举 \(i\) 时被它的最小质因子 \(p\) 枚举一次,所以复杂度为 \(O(n)\)
质因数分解
算术基本定理: 对于任何一个大于 \(1\) 的正整数都能唯一分解为有限个质数的乘积,可写作:
其中 \(c_i\) 都是正整数,\(p_i\) 都是质数,且满足 \(p_1<p_2<...<p_m\) 。
试除法
根据唯一分解定理,我们知道对于数 \(n\) 至多有一个质因子 \(>\sqrt n\) ,于是我们枚举 \(d\in [2,\lfloor \sqrt n\rfloor ]\) ,若 \(d\mid n\) ,则从 \(n\) 中除掉所有 \(d\) 的因子,同时累计除去的个数。
易发现 \(d\) 一定是质数,因为合数的因子已经在扫描到之前就全被除掉了。
如果最终 $n'\not=1 $ ,说明 \(n\) 存在一个大于根号的质因子 \(n'\) ,加进去即可。
根据刚刚那个性质,对于一个合数 \(i\) 一定存在一个数 $2\le j\le \lfloor \sqrt i\rfloor $ ,使得 \(j\mid i\) ,否则 \(i\) 就是质数。
于是我们可以筛出 \(2\sim \sqrt R\) 的所有质数 \(p\) ,将 \([L,R]\) 中所有 \(p\) 的倍数标记,即标记所有 $ip(\lceil \frac{L}{p}\rceil \le i\le \lfloor \frac{R}{p}\rfloor ) $ 。
最后未被标记的数就是质数,两两比较即可。
注意C++负数下取整会出问题,但有公式:
于是时间复杂度为 \(O(\sqrt R+(R-L+1)\log\log \sqrt R)\)
一个暴力的想法是对每个 \(1\le i\le n\) 分解质因数,再把结果合并,复杂度为 $O(n\sqrt n) $。
显然对于 \(1\sim n\) 的质因子一定不会超过 \(n\) ,于是我们可以先筛出 \(1\sim n\) 的所有质数,然后考虑对于每一个 \(p\) 求出对应的 \(v_p(n!)\) 就可以了。
由于 $1\sim n $ 的质数约为 $O(\frac{n}{\ln n}) $ 个,单个 \(p\) 求 \(v_p(n!)\) 的复杂度为 \(\log_p n\) ,总时间复杂度近似为 \(O(n)\)。
约数
在唯一分解定理中,\(n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\) ,则 \(n\) 的正约数集合可写成:
\(n\) 的正约数个数为 : \((c_1+1)(c_2+1)...(c_m+1)=\prod_{i=1}^m(c_i+1)\) 。
**\(n\) 的所有正约数的和为: ** \((1+p_1+p_1^2+...+p_1^{c_1})...(1+p_m+p_m^2+...+p_m^{c_m})=\prod_{i=1}^m(\sum_{j=0}^{c_i}(p_i)^j)\)。
求 n 的所有正约数集合——试除法
若 \(d\ge \sqrt n\) 是 \(n\) 的约数,那么 \(n/d\le \sqrt n\) 也是 \(n\) 的约数。换句话说,约数总是成对出现的(除了完全平方数,\(\sqrt n\) 单独出现)。
因此,只需要扫描 \(1\le d\le \sqrt n\) ,尝试 \(d\) 能否整除 \(n\) ,若能整除,则 \(n/d\) 也是 \(n\) 的约数,复杂度为 \(O(\sqrt n )\)。
试除法的推论
一个数 \(n\) 的约数个数上界为 \(2\sqrt n\) ,实际上有更精确的上界 \(d(n)(约等于^3\sqrt n)\) ,这往往会成为解决题目的关键。
引理1:不超过 \(n\) 最大的反质数一定是约数个数最大的数中最小的数。
证明:假设这个数为 \(x\) ,那么对于 \(y>x\) 一定不可能是答案。且 \(1\sim x-1\) 中都有 \(g(y)<g(x)\) ,于是 \(x\) 是答案。
引理2:\(1\sim n\) 中不同的质因子个数不会超过 \(10\) ,且所有质因子的指数总和不会超过 \(30\) 。
证明:最小的 \(10\) 个质因数的乘积为 \(2*3*5*7*11*13*17*19*23*29>2e9\) 。即使只包含最小的质数 $2 $ ,那么也有 \(2^{31}>2e9\) 。
引理3:若一个数 \(x\) 是反质数,则它的形式一定为 \(2^{c_1}3^{c_2}5^{c_3}...29^{c_{10}}\) ,并且 \(c_1\le c_2\le ...\le c_{10}\) 。
考虑调整法,如果不满足 \(c\) 单调不降,那么一定可以将 \(c\) 排序使 \(x\) 更小,且 \(g\) 的值不会受影响。如果质因数不是连续的最小的质数,那么依然可以调整。
于是我们可以大力 DFS ,DP一下情况总数最坏是 \(8e8\) 的,但由于有 \(\le n\) 的限制,所以搜索量实际非常小。
首先题目可以转化为 \(nk-\sum_{i=1}^n\lfloor \frac{k}{i}\rfloor i\)。
设 $g(x)=\lfloor \frac{k}{\lfloor \frac{k}{x}\rfloor }\rfloor $ ,则 \(g(x)\ge \lfloor \frac{k}{ \frac{k}{x}}\rfloor=x\),所以 $\lfloor \frac{k}{g(x)}\rfloor \le \lfloor \frac{k}{x}\rfloor $。
另外,$\lfloor \frac{k}{g(x)}\rfloor \ge \lfloor \frac{k}{\frac{k}{\frac{k}{x}}}\rfloor =\lfloor \frac{k}{x}\rfloor $ 。 于是有 $\lfloor \frac{k}{g(x)}\rfloor = \lfloor \frac{k}{x}\rfloor $。
进一步可得,\(\forall i\in [x,\lfloor \frac{k}{\lfloor \frac{k}{x}\rfloor }\rfloor ]\) ,\(\lfloor \frac{k}{i}\rfloor\) 值都相等。
对于 \(\forall i\in [1,k] ,\lfloor \frac{k}{i}\rfloor\) 至多只有 \(2\sqrt k\) 种不同的值。这是因为当 \(i\le \sqrt k\) 时,\(i\) 只有 \(\sqrt k\) 种选择,故 \(\lfloor \frac{k}{i}\rfloor\) 只有 \(\sqrt k\) 种不同的值。而当 \(i>\sqrt k\),\(\lfloor \frac{k}{i}\rfloor <\sqrt k\) ,故 \(\lfloor \frac{k}{i}\rfloor\) 至多也只有 \(\sqrt k\) 种值。
综上所述,对于 \(i=1\sim k\) ,\(\lfloor \frac{k}{i}\rfloor\) 由不超过 \(2\sqrt k\) 个连续段组成,每一段 \(i\in [x,\lfloor \frac{k}{\lfloor \frac{k}{x}\rfloor }\rfloor ]\) ,\(\lfloor \frac{k}{i}\rfloor\) 的值都相等于 \(\lfloor \frac{k}{x}\rfloor\) ,于是 \(\lfloor \frac{k}{i}\rfloor i=\lfloor \frac{k}{x}\rfloor i\) ,直接上等差数列求和公式。
其实这就是 整除分块。复杂度 \(O(\sqrt n)\)。
整除
定义:如果非零整数 \(a\) 是整数 \(b\) 的因数(约数,\(b/a\) 的余数为 \(0\) ),即 \(b\bmod a=0\) ,则称 \(a\) 整除 \(b\) 或 \(b\) 被 \(a\) 整除,记作 \(a |b\) 。(存在一个整数 \(k\) ,使得 \(b=ak\))
-
\(b|0;\pm 1|a;a|a\)
-
若 \(b|a,a\not= 0,则 1\le |b| \le |a|\)
-
\(若 b|a \Rightarrow b|ka(k\not= 0,k\in \Z)\)
-
\(若b|a,则bc|ac\)
-
\(若 b|a,b|c,则 b|(a\pm c)\)
-
\(若b|a,b|(a\pm c) ,则 b|c\)
-
\(若b|a,b|c,则 b|(ma+nc)\)
-
\(若 b|a,则 b^m|a^m\)
-
\(a|b,b|c\Rightarrow a|c\)
-
\(b|a,c|a,(b,c)=1\Rightarrow bc|a\)
-
\(b|ac,(b,a)=1\Rightarrow b|c\)
Th: 平方数的正因数个数是奇数个。
除法的性质:
定义: 对于任意 $a,b\in \Z,(a\not= 0) $,存在唯一整数对 \((q,r)\) ,使得 \(b=qa+r(0\le r< |a|)\) 。读作 \(b\) 除 \(a\) 商 \(a\) 余 \(r\) 。
能同时整除两个数\(n\)和\(m\)的数称为\(n\)和\(m\)的公因子,所有公因子中最大的那个称为最大公因数,记作\(\gcd(n,m),(n,m)\).而最小的能同时被\(n\)和\(m\)整除的非零数被称为他们的最小公倍数,记作\(lcm(n,m),[n,m]\).不难发现\(lcm(n,m)\gcd(n,m)=nm\)。
\((n,0)=(n,n)=n\)
对于整数 \(a,b\) ,若 \((a,b)=1\) ,我们称 \(a,b\) 互素或互质 。
基本性质:
- \(若a|b,a|c,则a|(b,c)\)
- \(若 m>0,则 m(a,b)=(ma,mb)\)
- \(若 (a,b)=d,则 (\frac{a}{d},\frac{b}{d})=1\)
- \(若(a,m)=1,(b,m)=1 ,则 (ab,m)=1。(a⊥ m,b ⊥ m\Leftrightarrow ab ⊥ m)\)
- \(若(a,b)=1\Rightarrow (a^n,b)=1,(a^n,b^m)=1\)
- \(若 a|m,b|m,则 [a,b]|m\)
- \((a,b)\times [a,b]=|ab|\)
- \(b_1,b_2,...,b_n 两两互素,b_i|a(1\le i\le n) ,则\Pi_{i=1}^nb_i|a\)
辗转相除法
\(\forall n,m\in \N,\gcd(n,m)=\gcd(m,n\bmod m)\) 。
- 证明:当 \(n<m\) 时显然成立。当 \(n\ge m\) 时,设 \(d=(n,m),r=n\bmod m\) , 有 \(n=qm+r\) ,又因为 \(d|n,d|qm\) ,所以 \(d|r\)。
于是可以将 \((n,m)\) 转化成求 \((m,n\bmod m)\) ,因为 \(n \bmod m< m\) ,最终递归到 \((d,0)\) 时,\(d\) 就是 \((n,m)\) 。
裴蜀定理: \(a,b\in \Z ,若 (a,b)=1,则存在 x,y\in \Z ,使得 ax+by=1,反之也成立\)
-
先证充分性:反证法,假设设 \(k=(a,b),k\not=1\) ,则 \(a=pk,b=qk\) ,\(apk+bqk=1,ap+bq=\frac{1}{k}\) ,根据整数的封闭性,可知不存在。
-
再证必要性:其实扩展欧几里得算法就构造地证明了。
进一步的,\(ax+by=(a,b)\) 存在一组 \((x,y)\) 的解。
同余
定义: 若整数 \(a,b\) 除以正整数 \(m\) 的余数相等,则称 \(a,b\) 模 \(m\) 同余,记为 \(a\equiv b \pmod m\),读作 \(a\) 同余于 \(b\) ,或 \(a,b\) 模 \(m\) 同余。即 \(a\equiv b\pmod m\Leftrightarrow a\bmod m=b\bmod m\)
例如:\(9\equiv -16\pmod 5\) .
- \(a\equiv b\pmod m\Leftrightarrow m\mid (a-b)\)
- 必要性:$a\bmod m=b\bmod m,a-\lfloor \frac{a}{m}\rfloor m=b-\lfloor \frac{b}{m}\rfloor m,a-b=m(...) $
- 充分性:\(a-b=mk,a\bmod m=a-\lfloor \frac{a}{m}\rfloor m=b+km-\lfloor \frac{b+km}{m}\rfloor m=b\bmod m\)
- 这很有用处,比如 \(8\equiv 23\pmod 5\) ,我们只需要计算 \(5\mid (8-23=-15)\) ,比不需要分别计算余数
同余式与方程很像。同余还是一个等价关系,也就是说,它满足自反律、对称律、传递律。
我们将同余的元素相加或相减,仍保持同余关系:
- \(a\equiv b\and c\equiv d\Rightarrow a+c\equiv b+d\pmod m\)(可加性)
- \(a\equiv b\and c\equiv d\Rightarrow a-c\equiv b-d\pmod m\)(可减性)
- 因为 \((a+c)-(b+d)=(a-b)+(c-d)\) ,减法同理。
- \(a\equiv b\and c\equiv d\Rightarrow ac\equiv db\pmod m\)(可乘性)
- \(ac-bd=(a-b)c+b(c-d)\)
- \(a\equiv b\Rightarrow a^n\equiv b^n\pmod m\)(同幂性)
- 例如 \(2\equiv -1\pmod 3\) ,有 \(2^n\equiv (-1)^n\pmod 3\) ,于是这意味着 \(2^n-1\) 是 \(3\) 的倍数当且仅当 \(n\) 是偶数。
- \(ad\equiv bd\Leftrightarrow a\equiv b\pmod m,\gcd(m,d)=1\)(互质可除性)
- 我们可以找到 \(dd'+mm'=1\) 的一组解,于是我们用 \(d'\) 乘同余式两边,得到 \(add'\equiv bdd'\pmod m\),因为 \(dd'\equiv 1\pmod m\) ,所以 \(a\equiv b\pmod m\)
- 注意到 \(d'\) 的作用非常像 $\frac{1}{d} $ ,称 \(d\) 是模 \(m\) 意义下的逆元,记作 \(inv(d,m),d^{-1}\)
- \(ad\equiv db\pmod {md} \Leftrightarrow a\equiv b\pmod m,d\not=0\)(模可除性)
- \(a\bmod m=b\bmod m\Leftrightarrow d(a\bmod m)=d(b\bmod m)\Leftrightarrow da\bmod md=db\bmod md\)
- \(ad\equiv bd \pmod m\Leftrightarrow a\equiv b\pmod {\frac{m}{\gcd(m,d)}}\)(裴蜀性)
- 因为 \(dd'+mm'=\gcd(d,m)\) ,于是 \(dd'\equiv \gcd(d,m)\pmod m\) ,用 \(d'\) 乘两边可得 \(a\gcd(d,m)\equiv b\gcd(d,m)\pmod m\) 。
- \(a\equiv b\pmod {md}\Rightarrow a\equiv b\pmod m\) (模数大变小)
- 因为 \(md\) 的所有倍数也是 \(m\) 的所有倍数。
- \(a\equiv b\pmod m\and a\equiv b\pmod n\Leftrightarrow a\equiv b\pmod {lcm(m,n)}\) ,\(m,n>0\)(模数小变大)
- 这意味着,如果我们知道了 \(a\equiv b\pmod {18,12}\) 可以立即推出 \(a\equiv b\pmod {36}\) ,这是因为 \(a-b\) 是 \(m,n\) 的公倍数,也是 \(lcm(m,n)\) 的公倍数。
- \(a\equiv b\pmod{mn} \Leftrightarrow a\equiv b\pmod m\and a\equiv b\pmod n,\gcd(m,n)=1\)(模数分解性)
- 例如:\(a\equiv b\pmod {100}\) 当且仅当 \(a\equiv b\pmod 4\and a\equiv b\pmod {25}\) ,换一种方式说:如果我们知道了 \(x\bmod 4,x\bmod 25\) ,那么就能确定 \(x\bmod 100\) 。这就是 中国剩余定理
进一步地,\(a\equiv b\pmod m\Leftrightarrow a\equiv b\pmod {p^{m_p}},\forall p\)。
$P $ 表示素数集。\(P=\{2,3,5,7,11,13,17,19,23,29...\}\)
剩余类:模 \(n\) 同余的所有数构成的等价类称为模 \(n\) 的 剩余类。当我们在模 \(n\) 意义下讨论这些数时它们等价。模 \(n\) 余 \(i\) 的剩余类记作 \(K_i\) 。显然模 \(n\) 的剩余类有 \(n\) 个,分别为 \(K_0,K_1,..,K_{n-1}\)。
完全剩余系:从 \(n\) 个模 \(n\) 剩余类中各选一个数 \(a_0,a_1,...,a_{n-1}\) ,它们构成模 \(n\) 的完全剩余系。
简化剩余系:从与 \(n\) 互质的剩余类中各选一个数 \(a_1,a_2,...,a_{\varphi(n)}\) ,它们构成模 \(n\) 的简化剩余系。