2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B.Coin(基本概率+二项式展开)
Posted ITAK
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B.Coin(基本概率+二项式展开)相关的知识,希望对你有一定的参考价值。
Bob has a not even coin, every time he tosses the coin, the probability that the coin’s front face up is qp(qp≤12) .
The question is, when Bob tosses the coin k times, what’s the probability that the frequency of the coin facing up is even number.
If the answer is
Input Format
First line an integer
T
, indicates the number of test cases (
Then Each line has
3
integer
Output Format
For each test case, print an integer in a single line indicates the answer.
样例输入
2
2 1 1
3 1 2
样例输出
500000004
555555560
题目大意:
Bob有一个不公平的硬币,正反的概率是不一样的,现在给出这个硬币朝上的概率为
pq
,现在求抛
k
次之后正面朝上的概率是多少,输出的是
解题思路:
根据概率所学的知识,很容易想到的是分母为
fenmu=pk
,分子为:
fenzi=∑ki=0Cik∗qi∗(p−q)k−i(i为偶数)
根据二项式定理有:
现在有
(q+p−q)k=∑ki=0Cik∗qi∗(p−q)k−i——(1)
设有:
(q−(p−q))k=∑ki=0Cik∗qi∗(−1)k−i∗(p−q)k−i——(2)
那么我们发现:
当
k
是奇数的时候
当
k
是偶数的时候
显然分子可求,最后在乘以分母关于
mod
的逆元就OK了。
代码:
#include <iostream>
#include <string.h>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <map>
using namespace std;
typedef long long LL;
const int MAXN = 1e6+5;
const double PI = acos(-1);
const double eps = 1e-8;
const LL MOD = 1e9+7;
LL Pow(LL a, LL b)
LL ans = 1;
while(b)
if(b & 1) ans = ans * a % MOD;
b>>=1;
a = a * a % MOD;
return ans;
void Exgcd(LL a, LL b, LL &x, LL &y)
if(b == 0)
x = 1;
y = 0;
return ;
LL x1, y1;
Exgcd(b, a%b, x1, y1);
x = y1;
y = x1-(a/b)*y1;
int main()
//freopen("C:/Users/yaonie/Desktop/in.txt", "r", stdin);
//freopen("C:/Users/yaonie/Desktop/out.txt", "w", stdout);
int T; scanf("%d", &T);
while(T--)
LL p, q, k; scanf("%lld%lld%lld",&p,&q,&k);
LL tmp1 = Pow(2*q-p, k);
LL tmp2 = Pow(p, k);
int flag = 1;
if(k & 1) flag = -1;
LL fenzi = (tmp2+flag*tmp1)%MOD*500000004LL%MOD;
LL x, y;
Exgcd(p, MOD, x, y);
x = (x%MOD+MOD)%MOD;
LL ans = Pow(x, k)*fenzi%MOD;
printf("%lld\\n",ans);
return 0;
以上是关于2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B.Coin(基本概率+二项式展开)的主要内容,如果未能解决你的问题,请参考以下文章
2017 ACM-ICPC 亚洲区(西安赛区)网络赛: B. Coin 概率题
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 G. Xor
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B.Coin(基本概率+二项式展开)
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F.Trig Function(论文+组合数)