计蒜客17115 Coin 数学 2017 ACM-ICPC 亚洲区(西安赛区)网络赛

来源:互联网 发布:java multiply用法 编辑:程序博客网 时间:2024/06/08 08:48

题目链接:计蒜客17115

思路:=>在伯努利试验中,事件A出现的概率为P,求在n重伯努利试验中,事件A出现偶数次(包括出现0次)的概率和出现
奇数次的概率.这个应该很好想。

过程如下:

解释来自网上:https://www.zybang.com/question/f115cda696a119c5dc739d7a6299f201.html



ACcode:

/*2017年9月17日15:02:31计蒜客17115 sum AC */ #include <iostream>#include <map>#include <set>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector> using namespace std;const int mod=1e9+7;typedef long long ll;  ll fast_mod(ll x,ll n,ll mod)  {      ll res=1;      while(n>0)      {          if(n & 1)              res=(res*x)%mod;          x=(x*x)%mod;          n >>= 1;      }      return res;  } void gcd(ll a,ll b,ll& d,ll& x,ll& y){    if(!b){ d=a;x=1;y=0;}    else{ gcd(b,a%b,d,y,x);y-=x*(a/b);}}ll inv(ll a,ll n){    ll d,x,y;    gcd(a,n,d,x,y);    return d==1?(x+n)%n:-1;} int main(){int t;scanf("%d",&t);while(t--){ll p,q,k;scanf("%lld%lld%lld",&p,&q,&k);ll pk=fast_mod(p,k,mod);ll u=pk+fast_mod(p-2*q,k,mod);ll d=inv(2*pk,mod);ll ans=u*d%mod;printf("%lld\n",ans);}return 0;} 


阅读全文
0 0
原创粉丝点击