排列与组合专项公式

1,错排公式

D(n) = (n-1) [D(n-2) + D(n-1)]

2,组合公式

C(n,k) = C(n-1,k) + C(n-1,k-1)

3,把n个相同的豆子放在k个不同的碗里,有几种放法。

假如xi代表第i个碗里有xi个豆子。

x1+x2+x3+....+xk=n;(xi>=0)

x1'+x2'+x3'+....+xk'=n+k(xi'=xi+1,xi>=1)

这就相当于把长度为n+k的木棍分成k份,有多少种分法。

n+k的木棍有n+k-1个切割点,从中选取看k-1个分割点。

则,结果为C(n+k-1,k-1);

数学:

1^3+2^3+...+n^3=[n(n+1)/2]^2

1²+2²+。。。+n²=n(n+1)(2n+1)/6.

平均抛掷 2^(n+1) - 2 次硬币才会出现 n 连正的情况。

  1. /* 
  2.     求解模方程a^x=b(mod n),n不为素数。拓展Baby Step Giant Step 
  3.     模板题。 
  4.      
  5.     方法: 
  6.     初始d=1,c=0,i=0; 
  7.     1.令g=gcd(a,n),若g==1则执行下一步。否则由于a^x=k*n+b;(k为某一整数),则(a/g)*a^k=k*(n/g)+b/g,(b/g为整除,若不成立则无解) 
  8. 令n=n/g,d=d*a/g,b=b/g,c++则d*a^(x-c)=b(mod n),接着重复1步骤。 
  9.     2.通过1步骤后,保证了a和d都与n互质,方程转换为d*a^(x-c)=b(mod n)。由于a和n互质,所以由欧拉定理a^phi(n)==1(mod n),(a,n互质) 
  10. 可知,phi(n)<=n,a^0==1(mod n),所以构成循环,且循环节不大于n。从而推出如果存在解,则必定1<=x<n。(在此基础上我们就可以用 
  11. Baby Step Giant Step方法了) 
  12.     3.令m=ceil(sqrt(n)),则m*m>=n。用哈希表存储a^0,a^1,..,a^(m-1),接着判断1~m*m-1中是否存在解。 
  13.     4.为了减少时间,所以用哈希表缩减复杂度。分成m次遍历,每次遍历a^m长度。由于a和d都与n互质,所以gcd(d,n)=1, 
  14. 所以用拓展的欧几里德定理求得d*x+n*y=gcd(d,n)=1,的一组整数解(x,y)。则d*x+n*y=1-->d*x%n=(d*x+n*y)%n=1-->d*(x*b)%n=((d*x)%n*b%n)%n=b。 
  15. 所以若x*b在哈希表中存在,值为k,则a^k*d=b(mod n),答案就是ans=k+c+i*m。如果不存在,则令d=d*a^m,i++后遍历下一个a^m,直到遍历a^0到a^(m-1)还未找到,则说明不解并退出。 
  16.  
  17. */  

给出一个N,求1..N中与N互质的数的和:ans=N*phi(N)/2

分拆数:

n的分拆数中最大部分为m的个数=n分拆成m部分的个数。


你可能感兴趣的:(排列与组合专项公式)