c語言求組合數計算公式
程式碼如下。
#include<stdio.h>
int prime[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 }
int len = 10
int factors1[10]
int factors2[10]
void decompose(int* factors, int m, int n)
c語言求組合數計算公式
C(n,m)=A(n,m)/m!=n!/m!(n-m)!與C(n,m)=C(n,n-m)。(n為下標,m為上標)。例如C(4,2)=4!/(2!*2!)=4*3/(2*1)=6,C(5,2)=C(5,3)。
排列組合c計算方法:C是從幾個中選取出來,不排列,只組合。
C(n,m)=n*(n-1)*...*(n-m+1)/m!
例如c53=5*4*3÷(3*2*1)=10,再如C(4,2)=(4x3)/(2x1)=6。
c語言求組合數計算公式
C語言求組合數不能直接使用數學公式C(n,m)=(m!)/(n!*(n-m)!)即使VC 6.0的int是32bit,但其實當計算到17!時候就會溢位,所以需要另闢蹊徑。
先來把公式變形。
(m!)/(n!*(m-n)!)=(m*(m-1)*(m-2)*…*(m-n+2)*(m-n+1))/(n!)=((m-n+1)/1)*((m-n+2)/2)*((m-n+3)/3)*…*((m-n+n)/n)=∏((m-n+k)/k)【k=1,2,3,…,n】     這樣,一項一項的算,就避免了求階乘的路,下面上程式:
#include
#include
int main(int argc, char* argv[])
{
int isum=1
int m,n,k
printf("input m=")
scanf("%d",&m)
printf("Input n=")
scanf("%d",&n)
for(k=1k<=nk++)
{
isum=(isum*(m-n+k))/k//先算乘法,避免先算(m-n+k)/k除不盡帶來誤差
}
-
諸葛亮碑文全文及譯文
《諸葛亮碑文》全文及譯文:“噫籲嚱,危乎高哉,蜀道之難,難於上青天。蠶叢及魚鳧,開國何茫然。爾來四萬八千歲,不與秦塞通人煙。”...
-
csgo對槍應該走位還是站著不動
應該站著不動。因為csgo一邊走一邊開槍的彈道是模糊的,只有身體停止移動的時候彈道才是穩定的,彈道不穩就不能準確的瞄準命中敵人。拿部分衝鋒槍例如野牛可以一邊跑一邊打,因為子彈多可以形成火力壓制讓對方不敢露頭。...
-
上海話吃餛飩什麼意思
上海話吃餛飩的原話是,瞎子吃餛飩心知肚明。所以上海話吃餛飩指的就是,你在某件事上裝傻,其實心裡面是一清二楚的啦。...
-
G3606停留在哈爾濱西第幾站臺
G3606停留在哈爾濱西第3站臺。G3606次高鐵,是從哈爾濱西至北京朝陽的列車,11時52分從哈爾濱西出發,停留在第3站臺,途經長春西→四平東→瀋陽北→阜新→遼寧朝陽→喀左→密雲→順義西→17時44分到達終點站北京朝陽。全程執行5.87小時。...