計算組合數 i 0,n i C n,i

2021-10-04 07:48:27 字數 1774 閱讀 7304

題目:

組合數學中恒等式的證明:1、σ(i=0,n)i^2*c(n,i)=n*(n+1)*2^(n-2);

還有乙個:σ(i=0,n)(1/(i+1)(i+2))c(n,i)=(2^(n+2)-n-3)/((n+1)(n+2))麻煩給出詳解,

解答:

第乙個,利用 (1+x)^n=σ(i=0,n) c(n,i)*x^i,兩邊對x求導,得:

n*(1+x)^(n-1)=σ(i=1,n) i*c(n,i)*x^(i-1).兩邊同乘以x,得:

n*x*(1+x)^(n-1)=σ(i=1,n) i*c(n,i)*x^i.兩邊再對x求導,得:

n*(1+x)^(n-1)+n*x*(n-1)*(1+x)^(n-2)=σ(i=1,n) i^2*c(n,i)*x^(i-1).令x=1,整理,得證.

第二個,利用 a:ς(i=0,n) c(n,i)=2^n 和 b:ς(i=1,n) i*c(n,i)=n*2^(n-1).

左式=σ(i=0,n) (1/(i+1)-1/(i+2))*c(n,i)

=(1-1/2)*c(n,0)+(1/2-1/3)*c(n,1)+(1/3-1/4)*c(n,2)+...+(1/n-1/(n+1))*c(n,n-1)+(1/(n+1)-1/(n+2))*c(n,n)

=c(n,0)-(1/(n+2))*c(n,n)+(1/2)*(c(n,1)-c(n,0))+(1/3)*(c(n,2)-c(n,1))+...+(1/(n+1))*(c(n,n)-(n,n-1))

=1-1/(n+2)+σ(i=1,n) (1/(i+1))*(c(n,i)-c(n,i-1))

=(n+1)/(n+2)+σ (1/(i+1))*(n!/ (i!*(n-i)!) - n!/ ((i-1)!*(n-i+1)!))

=(n+1)/(n+2)+σ (1/(i+1))*((n-i-1-i)*n!) / (i!*(n-i+1)!)

=(n+1)/(n+2)+σ ((n-2*i+1)/(n+1)*(n+2))*((n+2)!/ ((i+1)!*(n-i+1)!))

=(n+1)/(n+2)+1/((n+1)(n+2)) σ (n+3-2*i-2)*c(n+2,i+1)

=(n+1)/(n+2)+(n+3)/((n+1)*(n+2)) σ c(n+2,i+1) - 2/((n+1)*(n+2)) σ (i+1)*c(n+2,i+1)

利用a化簡第二項

=(n+1)/(n+2)+((n+3)*(2^(n+2)-n-4)) / ((n+1)*(n+2)) - 2/((n+1)*(n+2)) σ(i=2,n+1) i*c(n+2,i)

利用b化簡第三項

=(n+1)/(n+2)+((n+3)*(2^(n+2)-n-4))/((n+1)*(n+2)) - (2*((n+2)*2^(n+1)-2*n-4)) / ((n+1)*(n+2))

然後化簡一下,就得證啦.

對於本道題目,就是圖中方框的時候就可以讓x=1了,因為不需要得到i^2這個係數,

容易得到σ(i=0,n)i*c(n,i)=n*2^(n-1),如果是演算法題可以對2^(n-1)使用快速冪

#includeusing namespace std;

int mm=1000000007;

int main()

res=res*n%mm;

cout<

return 0;

}

計算組合數

1.防溢位 如果直接用c n,m n!n m m 來程式設計很可能會在算n!時就爆了long long,所以每一步最好把除分母也算上。所以對於c n,m 來說取m min m,n m 來算c n,m n n 1 n 2 n m 1 m m 1 m 2 1 顯然分子分母都是m項相乘,從後往前去算 先算...

計算組合數

計算組合數 time limit 1000ms memory limit 32768kb submit statistic problem description 計算組合數。c n,m 表示從n個數中選擇m個的組合數。計算公式如下 若 m 0,c n,m 1 否則,若 n 1,c n,m 1 否則...

計算組合數

time limit 1000 ms memory limit 32768 kib problem description 計算組合數。c n,m 表示從n個數中選擇m個的組合數。計算公式如下 若 m 0,c n,m 1 否則,若 n 1,c n,m 1 否則,若m n,c n,m 1 否則 c n...