zoukankan      html  css  js  c++  java
  • 数论

    今天,$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$

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/ZUTTER/p/9350979.html
Copyright © 2011-2022 走看看