计蒜客 17115 2017 ICPC 西安网络赛 B Coin
2017-09-17 00:12
267 查看
Problem
nanti.jisuanke.com/t/17115Reference
关于二项展开式系数和【二项式定理】【推导】计蒜客17115 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
Meaning
抛一个硬币正面朝上的概率是 qp(qp≤12),连抛 k 次,求正面朝上的次数是偶数的概率Analysis
即是求:∑0≤i≤k,i是偶数Cik(qp)i(1−qp)k−i
通分,提出 1pk,得:
1pk∑iqi(p−q)k−i
其中的求和部分,即是求 [q+(p−q)]k 展开式中偶数项的系数和。
求 (a+b)k 的偶数项和可以:
1. 直接通过 (a+b)k+(−a+b)k2 来求;
2. 也可以用 (a+b)k±(a−b)k2 来求
(a+b)k 的通项是 Cikaibk−i
(a−b)k 的通项是 Cikai(−b)k−i=(−1)k−iCikaibk−i
要消去奇数项,就要使得前者 i 为奇数时,后者 k - i 也是奇数
所以当 k 是奇数时,两者相减;而 k 是偶数时,两者相加
Code
#include <cstdio> using namespace std; const int MOD = 1000000007; int fp(long long a, int b) { int r = 1; for( ; b; b >>= 1, a = a * a % MOD) if(b & 1) r = r * a % MOD; return r; } int main() { int T; scanf("%d", &T); while(T--) { int p, q, k; scanf("%d%d%d", &p, &q, &k); int a = fp(p, k), // [q + (p - q)] ^ k b = fp(p - q - q, k); // [-q + (p - q)] ^ k int ans = (a + b) % MOD; // ans / 2 ans = (long long)ans * fp(2LL, MOD - 2) % MOD; // ans / p^k ans = (long long)ans * fp(fp(p, k), MOD - 2) % MOD; printf("%d\n", ans); } return 0; }
用第二种的:
/*… 前面相同 …*/ int a = fp(p, k), // [q + (p - q)] ^ k // q + q - p <= 0,所以要 + MOD b = fp(q + q - p + MOD, k), // [q - (p - q)] ^ k ans; if(k & 1) ans = (a - b + MOD) % MOD; else ans = (a + b) % MOD; // ans / 2 ans = (long long)ans * fp(2LL, MOD - 2) % MOD; // ans / p^k ans = (long long)ans * fp(fp(p, k), MOD - 2) % MOD; /*… 后面相同 …*/
相关文章推荐
- 计蒜客 17115 Coin(2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B)
- 【二项式定理】【推导】计蒜客17115 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 计蒜客 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B coin(求乘法逆元)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin (概率公式+快速幂)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B Coin (概率计算)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 计蒜客17115 Coin 数学 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin(概率)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 二项式定理
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B.Coin(基本概率+二项式展开)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B Coin(逆元,费马小定理)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin(矩阵快速幂)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 概率+矩阵快速幂
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B:coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛b题Coin(矩阵快速幂)
- B. Coin 数学/组合数 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 - Coin(二项式展开)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B Coin (概率计算)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin