有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複製
110 3 5
複製
797520667
#includeusingnamespace
std;
typedef
long
long
ll;
inline
intread()
while(ch>='
0'&&ch<='9')
return x*f;
}#define pi 3.14159265358979323846
const
int inf=0x3f3f3f3f
;const
int mod=1e9+7
;const
int maxn=1e6+100
;const
int maxa=1e9+10
;
ll n,m,p,t;
ll f[maxn];
ll qpow(ll a,ll b)
b>>=1
; a=(a*a)%mod;
}return
ans;
}ll cal(
int m,int
n)
return f[m]*qpow(f[m-n],mod-2)%mod*qpow(f[n],mod-2)%mod;
}int
main()
while(t--)
else
ans=(qpow(2,n)-ans+mod)%mod;
ans=qpow(ans,mod-2
); printf(
"%lld\n
",(ans*cal(n,p))%mod);}}
return0;
}
乘法逆元 組合數
要求 a b mod p的值,但 a 很大,無法直接求得a b的值時,就要用到乘法逆元。b x 1 mod p x的最小正整數解k叫做b關於模p的乘法逆元。a b mod p a k mod p 證明 k n p 1 b a k mod p a n p 1 b mod p a b n p 1 mod...
牛客 D 扔硬幣(組合數)
題目描述 有n枚硬幣,每枚硬幣扔出來是正面和反面的概率各佔50 小明同時扔下了n枚硬幣後,已知至少有m枚硬幣是反面。請問恰好有k枚硬幣是正面的概率是多少。輸入描述 輸入t,代表有t組資料。每組資料輸入乙個數n,m,k,代表有n枚硬幣,丟擲以後至少有m枚是反面的情況下,恰好有k個正面的概率。t 100...
計數 (快速冪 逆元 組合數學隔板法)
計數時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 小sun最近對計數問題來了興趣,現在他有乙個問題想問問你 有乙個含有n個數字的序列,每個數的大小是不超過1000的正整數,同時這個序列是個單調不增序列。但是很不幸的...