oi数学相关总结.docVIP

  • 2
  • 0
  • 约1.15万字
  • 约 13页
  • 2020-04-09 发布于广东
  • 举报
个人学习状况总结 感觉数学这个专题还是没有学好。。。这个专题就这么过去了,可是没有 达到应该达到的水平。。。 首先是缺了儿次课,虽然之前的假期有预习过所有数论内容,但是只局限 于会打模板,大致了解原理的阶段。简单的题目做了感觉没有太大的收获,难 的题目刷不动。在看了题解以后,因为讲解较为复杂看不懂,就总是会看代码, 然后陷入抄代码、背代码的误区,自以为已经理解,实际上还是半懂不懂,下 一次再见到类似的题目依然做不出,在运用的时候几乎没有什么思路和灵感, 所以考试总是考不好? 然后就是我本身思维能力就很差,数学这个专题非常考验思维能力。但是 思维能力可以通过练习与总结得到提高,所以我会继续努力。。。 以后我准备运用零碎的时间,每天刷一道和数学有关的题目,以此增强自 己的思维水平和运用能力。 知识点梳理与总结 标★为掌握不是很牢固,还需要多加复习的内容。 感觉会写很长。。。但是总结一遍思路真的可以清晰很多。 数论 素数筛 0(n)的素数筛是最常用的,其原理是每一个数是由另一个数和其最小的 质因数来遍历到的。 模板: for(int i=2;i=n;i++){ if (!is[i])pri[++tot]=i; for(int j=l;j=totpri[j]*i=n;j++){ is[pri[j]*i]二1; if (i%pri[j]==0)break; 和素数有关的定理 威尔逊定理:若p是质数,则(p-1) !三p-1 (mod p) 若(p-1) !三p-1 (mod p),则p是质数 费马小定理:若P是质数,a为正整数,a与p互质,则a7p-l)三 1(mod p) 欧拉定理*:若a与m互质,则a^phi (m) = 1 (mod m) 若 x=m,则 a*x=a* (x%phi (m) +phi (m)) (mod m) Sum (phi (d)) (d|n)=n 3?求最小公约数(欧几里徳/辗转相除法): int gcd(int x, int y){ int r=x%y; while(r){x=y, y=r, r=x%y;} return y; } 求解线性同余方程(扩展欧几里德) 求解ax = c (mod b)可以看作是求ax+by二c。 求解ax+by=gcd (a, b)代码如下,如果c%gcd (a, b) !=0,无解,否则扩大x, y 即可。 假设 sa=a/gcd (a, b), sb=b/gcd (a, b),通解可表示为 x+at 和 y-bt int exgcd (int a, int b, int x, int y) { if(!b){x=l, y=0;return a;} int re=exgcd(b, a%b, x, y), tmp=x; x=y, y二tmp-(a/b) *y; return rc; I 裴蜀定理 若a, b是整数,且gcd (a, b)=d,那么对于任意的整数x, y, ax+by都一定是d 的倍数,特别地,一定存在整数x, y,使ax+by二d成立。推广:n个整数, al, a2, a3 an为n个整数,d是它们的最大公约数,那么存在整数 xl xn 使得 xl*al+x2*a2+??? xn*an=do 例题:bzoj2299, bzoj2257 逆元 ax=l (mod p),则 x 为 a 关于 p 的逆元,xt = x/a (mod p) 求逆元的几种方法: ?费马小定理:若P为素数,a与p互质,则x二V (p-2) ?扩展欧几里德:若P为素数,a与p互质,求解ax+py=lo ?欧拉定理:若p为素数,a与p互质,则x=a^ (phi (p)-l) ?线性递推:设p=at+i (t=p/a向下取整,i=p%a) 则 at+i三0(mod p) 两边同时乘以a的逆元f [x]和i的逆元f [i]: F [x] =-(p/a) *f [p%a] ?诡异的式子:(a/b)%c二Qi%(b*c))/b [但是容易出小数,几乎没用] 欧拉函数 欧拉函数是指小于x的与x互质的数的个数。 性质 1: p 是素数,贝I」phi (pQ 二(p-l)*p(T) 性质2:如果a, b互质,则phi (a*b) =phi (a)*phi (b)(既与a互质又与b互 质的数才会与a*b互质 性质 3:如果 x=pl al*p2 a2*---*pk ak 则 phi (x) =x(l~l/pl) (lT/p2)…(1 - 1/pk) 欧拉函数线性筛: for(int i=2;i=n;i++){ if (! is[i])pri [++tot]二i, phi [i]二iT ; for(int j二1;j〈二totpri[j]*i〈二n;j++) { is[pri[j]*i]二1; if (i%pr

文档评论(0)

1亿VIP精品文档

相关文档