取模:
ACM竞赛中经常会见到取模的操作,取模的规则一般如下:
对于加减乘运算,在运算之前取模和在运算之后取模的结果不变,因此可以在计算之前取模使得数据不会爆,注意中间如果是个多项式(有多步运算),那么每一次运算完都要取模,用来保证数据不会爆。
但是对于除法,不能直接对除数取模,要乘以除数的逆元,这样才能保证数据正确。求逆元的方法有好多种,根据费马小定理的快速幂写法比较直观。(一个例子)
扩展欧几里得:
已知a,b,c,那么对于未知的x,y,方程a*x+b*y=c的解可由扩展欧几里得算法得出。
(其中a,b,c可正可负)x有一个最小正整数解x=(x%b+b)%b。(例子(五指山))
质数唯一分解:
任何大于1的自然数都可以分解为质数连乘的形式。
从2开始除,除不尽再除以3,除不尽再除以5,以此类推,直到除尽。
例:35 35/2 除不了 35/3 除不了 35/5=7 7/7=1
所以35=5^1*7^1
48 48/2=24 24/2=12 12/2=6 6/2=3 3/3=1
所以48=2^4*3^1
另外这里有一个结论,分解后的(指数+1)连乘就是这个数的因子个数
对35来说,因子个数是(1+1)*(1+1)=4 即1,5,7,35
对48来说,因子个数是(4+1)*(1+1)=10 即1,2,3,4,6,8,12,16,24,48