進球數 概率 組合數學

2021-09-14 02:56:54 字數 3025 閱讀 9023

中超繼續進行,廣州恆大和北京國安馬上開賽了,比賽持續90分鐘,為了分析方便,我們把5分鐘作為乙個時間片,那麼比賽會進行18個時間片。在每乙個時間片內,恆大踢進1球的概率百分比都是a%,國安踢進1球的概率都是b%。當比賽結束後,兩支球隊當中,至少有一支球隊的進球數是質數的概率是多少?

第一行,乙個整數r,表示有r組測試資料。1 <= r <= 10。

每組測試資料格式:

第一行,a和b。 0 <= a <= 100, 0 <= b <= 100。

共r行,每行乙個實數,表示概率。

3

50 50

100 100

12 89

0.5265618908306351

0.00.6772047168840167

題目大意:在18個時間片段內至少有一支球隊的進球數是質數的概率是多少?

根據題意,簡化一下問題,我們先單獨考慮一支球隊進球數是質數的概率

如果一支球隊的進球數為質數,那麼這支隊的進球數只能是2、3、5、7、11、13、17,繼續簡化問題,這支球隊進球數為2,那麼球隊在18個時間片段內進2球的情況如下:

情況\時間片段12

3456

……17181

√ √√√

√√××××

××××××

××××××

×××××2

√ √√×

××√√√×

××××××

××××××

×××××…

………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……18××××

××××××

××××××

×××××√

√√√

√√哇!這個表的規模也太大了吧!

這樣的情況有多少種呢?能不能通過計算將它算出來呢?仔細觀察,我們就可以發現,這不就是組合數嘛!這就相當於從18個小球中選2個:c182

c^_c1

82​在這18個時間片段中,只有2個時間片段進球,其他時間片段不能進球的情況下才符合當前題意,而這種情況又有c182

c^_c1

82​種,所以設進球概率為p(g

oal)

p(goal)

p(goal

),球隊在18個時間片段內進2球這種情況的概率是:c182

×p(g

oal)

2×(1

−p(g

oal)

)16

c^_\times p(goal)^2 \times(1-p(goal))^

c182​×

p(go

al)2

×(1−

p(go

al))

16由此可知,進球數i

ii相對應的組合數是c18i

c^_c1

8i​,概率演算法也與上述相同:c18i

×p(g

oal)

i×(1

−p(g

oal)

)18−i

c^_\times p(goal)^i \times(1-p(goal))^

c18i​×

p(go

al)i

×(1−

p(go

al))

18−i

(組合數可用楊輝三角預處理)。

現在,我們回歸到原題,求至少有一支球隊的進球數為質數的概率,先分類討論一下:

恆大進球數為質數,國安進球數為非質數

恆大進球數為非質數,國安進球為質數

恆大進球數為質數,國安進球數為質數

將以上三種情況的概率求出來相加,就是答案了。但是,除此之外還有一種更簡單的方法。

至少有一支球隊的進球數為質數的概率=1-兩支球隊進球數都是非質數的概率

這樣算就方便多了。

#include

#include

#include

#include

using

namespace std;

int r,a,b;

long

long c[25]

[25];

int composite[25]

=;//合數集合

double hd[25]

,ga[25]

,temp1,temp2,ans;

void

init()

for(

int i=

1;i<=

18;i++

)for

(int j=

1;j) c[i]

[j]=c[i-1]

[j-1

]+c[i-1]

[j];

}int

main()

for(

int i=

0;i<=

11;i++

)for

(int j=

0;j<=

11;j++

) ans+

=hd[composite[i]

]*ga[composite[j]];

ans=

1.00

-ans;

cout

)<}return0;

}

組合數學 卡特蘭數

我們以一道題為例來介紹卡特蘭數 給定n n 個0 0 和n n個1 1,它們將按照某種順序排成長度為2 n 2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0 0的個數都不少於1 1的個數的序列有多少個。輸出的答案對109 7 109 7取模。109 7 為了便於解決,我們可以把這個問...

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...

組合數學 卡特蘭數總結

卡特蘭數 問題 n對括號有多少種合法的匹配方式?卡特蘭數的常見應用之一 結論 對於n對括號,合法的排列共有c n,2n c n 1,2n 基本思路 考慮n對括號,有n個 和n個 對於任意乙個 其前面必定有乙個 跟他對應,如果沒有則是非法序列。也就是說,對於 其前面的 的數量必須大於等於 的數量。假設...