2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
2017-09-18 21:16
288 查看
题意:抛k次硬币,硬币正面朝上的概率是q/p,问出现偶数次正面朝上的概率是多少,答案取模1e9+7
思路:经过数学推导最后得到 (p^k+(p-2*q)^k)/(2*p^k) 之后取模1e9+7,用到了快速幂和逆元
思路:经过数学推导最后得到 (p^k+(p-2*q)^k)/(2*p^k) 之后取模1e9+7,用到了快速幂和逆元
#include <iostream> #include <cstddef> #include <cstring> #include <vector> #include <cstdio> #include <cmath> #define S second #define F frist using namespace std; typedef long long ll; const ll mod=1000000007; ll pow_mod(ll a,ll b) // 快速幂取模 { ll ans=1; while (b) { if (b&1) ans=ans*a%mod; b>>=1; a=a*a%mod; } return ans; } ll ext_gcd(ll a, ll b, ll &x, ll &y) //扩展欧几里得 { if (b == 0) { x = 1; y = 0; return a; } ll d = ext_gcd(b, a % b, x, y); ll tmp = x; x = y; y = tmp-a/b*y; return d; } ll inv(ll a, ll mod) { // 逆元计算 ll x, y; ext_gcd(a, mod, x, y); return (x % mod + mod) % mod; } int main() { ll p,q,k; int t; cin >> t; while(t--) { cin >> p >> q >> k; q=pow_mod(p-2*q,k); p=pow_mod(p,k); q=(p+q)%mod; p=(p*2)%mod; cout << (inv(p,mod)*q)%mod << endl; } return 0; }
相关文章推荐
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B Coin (概率计算)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 G. Xor
- 2017 ACM-ICPC 亚洲区(西安赛区)网络...
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E.Maximum Flow(找规律?)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Trig Function
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E. Maximum Flow
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function cos(nx)
- 计蒜客 17115 Coin(2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B)
- [置顶] 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 【找规律】计蒜客17118 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E. Maximum Flow
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B:coin
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F.Trig Function(论文+组合数)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function cos(nx)