1、数论知识1. 数的整除特征(1)能被 2(或 5)整除的数的特征是这个数末位数能被 2(或 5)整除;(2)能被 4(或 25)整除的数的特征是这个数末两位上数字所组成的数能被 4(或 25)整除;(3)能被 8(或 125)整除的数的特征是这个数末三位上数字所组成的数能被 8(或 125)整除.(4) 能被 9(或 3)整除的数的特征是这个数的各个数位上的数字之和能被 9(或 3)整除.(5) 能被 11 整除的数的特征是这个数的偶数位上数字之和与奇数位上数字之和的差能被11 整除.(6) 能被 7(或 11,或 13)整除的数的特征是这个数的末三位上数字所组成的数与末三位以前的数字所组成的
2、数的差能被 7(或 11,或 13)整除.2. 除法定理对任意整数 a 和任意正整数 n,存在唯一的整数 q 和 r,满足 0= r n,并且 a=qn+r。3. 最大公约数 gcd(a,b) = gcd(|a|, |b|),gcd(a, 0) = a 。4. 对任意整数 x 和 y 有:若 d|a 并且 d|b,则 d|(ax+by)。5. 如果 a 和 b 是不都为 0 的任意整数,则 gcd(a,b)是 a 与 b 的线性组合集合ax+by: x, y是整数中的最小正元素。6. 唯一质因子分解:合数 a 仅能以一种方式,写成如下的乘积形式:,其中 pi 为素数,p 1p2pr 且为 ei
3、 正整数。12.eerp7. 如果一素数 p 整除乘积 ab,则 p 必整除 a 或 b。8. 如果 p 是任意一个不能整除整数 a 的素数,则 。1(modp )9. 则:10. 线性同余方程 有解的条件是:gcd(a, n)|b。如果把解看成是一些模 n 的(modaxb n)等价类,那么答案就有 d 个,d=gcd(a, n)。分别为:x, x+n/d, x+2n/d, , x+(d-1)n/d11. 中国剩余定理。设 m1, m2, ., mk 两两互素,则下面同余方程组:(od(od(1)2(3)如 a n)b n) +b- ) 12(mod).()12kkxaKMP 算法实现/*
4、使用注意:* * 要匹配的数据的类型为 dt,可以是 char,int 等等,请先设置好。* D是长长的数据, M是要寻找的模式* n 和 m 分别存放数组 D和 M的长度,数组内容从 0 开始计算* I的长度与 M的长度要一致,在外部分配好然后传进来以方便使用* start 是在 D中开始搜索的位置,从 0 开始计算* 返回值是第一个匹配的模式的位置,是一个整数,从 0 开始计算。* 如果找不到匹配就返回-1* * 此模板已应用到:* HDOJ:* 1711, */typedef int dt;int KMP(dt D, int n, dt M, int m, int I, int start) / get Iint i,j,k;j=0;k=-1;Ij=k;while (jm) if (k=-1 | Mj=Mk) j+; k+;if (Mj!=Mk) Ij=k;else Ij=Ik; else k=Ik;/ KMPi=start; j=0;while (in j+;else j=Ij;在 0= x M=m1m2.mk 内有唯一解。若 p 为解,则 kp(k 为整数)也为其解。if (j=m)return i-m;elsereturn -1;