今天,$zutter$终于下定决心去学了数论,然后

 

从基础说起

  • gcd

这个..感性理解一下就好了啊

gcd(int a,int b)
{
	if(b==0) return a;
	return(b,a%b);
}

 证明:

 

  • exgcd

扩展欧几里得算法,用于在已知(a,b)时求解(x,y) 使 a*x+b*y=c (c | gcd(a,b))

int ex_gcd(int a,int b,int &x,int &y)
{
	int ret, tmp;
	if(! b)
	{
		x = 1, y = 0;
		return a;
	}
	ret=ex_gcd(b, a % b, x, y);
	tmp= ; x=y; y=tmp-a/b*y;
	return ret; 
}

 证明:

 

又因为  

所以任意都可为解

 

  •  逆元

时,称x为a在%p意义下的逆元,记作

解法:

    • 扩展欧几里得

     

    • 费马小定理
    • 线性求逆元 

 

  • 中国剩余定理 Chinese Rimainder Theorem

  

  解法:

 

 

  • 排列

    %P      

    • $C_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}$  
    • m,n小于p时可以用O(n)的时间预处理,用O(1) 求值

      方法

      

    

    2.当m,n过大p过小,m,n>p 时

    •   卢卡斯定理

      求c的公式

    递归中每次当 m,n<p 时调用1中公式即可。

  •  二项式定理

  $(x+y)^n$ 中 $x^ty^{n-t}$ 的系数为  $C_n^t$

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程

3718 0元 58元 限免