題目描述
有n枚硬幣,每枚硬幣扔出來是正面和反面的概率各佔50%。小明同時扔下了n枚硬幣後,已知至少有m枚硬幣是反面。請問恰好有k枚硬幣是正面的概率是多少。
輸入描述:
輸入t,代表有t組資料。每組資料輸入乙個數n,m,k,代表有n枚硬幣,丟擲以後至少有m枚是反面的情況下,恰好有k個正面的概率。
(t<=1000,n<1e5,m<=1000,k<=n)
輸出描述:
對於結果是p/q,輸出分數取模1e9+7後的結果。
示例1輸入
1103
5
輸出
思路:由於已知部分硬幣的方向。因此,扔n個硬幣的情況要在2的n次冪的中去掉少於m個硬幣是反面的情況。
對於k+m>n是不可能的,直接輸出0.
其餘情況:c(n,k)/[ 2^n - ∑(c(n,i)) ] (i#include
#include
#include
using
namespace std;
const
int n=
1e5+10;
const
int inf=
0x3f3f3f3f
;int mod=
1e9+7;
typedef
long
long ll;
ll fact[n]
,infact[n]
;ll ksm
(ll a,ll n)
return sum;
}void
init()
}ll c
(ll a,ll b)
intmain()
x=ksm(
2,n)
;y=c
(n,k)
;for
(i=0
;i)printf
("%lld\n"
,y*ksm
(x,mod-2)
%mod);}
return0;
}
扔硬幣 (逆元 組合數學)
有n枚硬幣,每枚硬幣扔出來是正面和反面的概率各佔50 小明同時扔下了n枚硬幣後,已知至少有m枚硬幣是反面。請問恰好有k枚硬幣是正面的概率是多少。輸入t,代表有t組資料。每組資料輸入乙個數n,m,k,代表有n枚硬幣,丟擲以後至少有m枚是反面的情況下,恰好有k個正面的概率。t 1000,n 1e5,m ...
牛客網 Chessboard 組合數
今天csl又來了tl。他看到tl有乙個非常大的棋盤和許多玻璃球。所以他有個主意。他對tl說 你有多大的棋盤.和我一起玩遊戲怎麼樣?我會給你,你可以在棋盤上選擇乙個任意大的方形區域 假設你選擇乙個方形區域 和在每個正方形上放置一些玻璃球 每個正方形應放置不小於玻璃球 您的位置需要滿足 如果我們選擇不同...
牛客多校第十場D(字首和與組合數)
題意 長度為n的序列,初始都是0,維護3個操作 there are three types of operations 1.1 l r w,for each index i l,r change ai to ai w.2.2,change a to its prefix sum array.i.e....