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 \frac{q}{p}(\frac{q}{p} \le \frac{1}{2})pq(pq≤21).
The question is, when Bob tosses the coin kk times, what's the probability that the frequency of the coin facing up is even number.
If the answer is \frac{X}{Y}YX, because the answer could be extremely large, you only need to print (X * Y^{-1}) \mod (10^9+7)(X∗Y−1)mod(109+7).
Input Format
First line an integer TT, indicates the number of test cases (T \le 100T≤100).
Then Each line has 33 integer p,q,k(1\le p,q,k \le 10^7)p,q,k(1≤p,q,k≤107) indicates the i-th test case.
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丢硬币,这个硬币比较特殊,正面朝上的概率不是1/2,而是q/p
现在问Bob丢k次以后,正面朝上次数是偶数次的概率。
(一开始队友把Even读成奇数,怎么样都对不上样例)


(╯' - ')╯︵ ┻━┻ (掀桌子)


 ┬─┬ ノ( ' - 'ノ) {摆好摆好)


 (╯°Д°)╯︵(再掀一次)


后来打个表,打1/9—8/9Mod(1e9+7).,最后发现5/9的时候是答案。
我才恍然发现Even是偶数的意思,Odd是奇数的意思。还好没坑太久

那么这道题目就变成了一个求概率的问题。
很容易得到一个公式P=C(k,n)*  p^n  *(1-p)^(k-n);
N的值从0-最大小于K的偶数。这样我们只需要求和就可以。
分母恒为p^n,但这个式子中的分子组合数太大,简单处理必然有问题。

现在我们需要用到一个概率与数理统计里面的公式

  

假设为a和b,这道题目的两个概率a+b为1. 所以最后的答案是1^n
我们把这个式子展开,设每一项为D1,+D2+D3+D4…Dn=1;
现在进行变形,令a为-a,那么上式展开后就变成D1-D2+D3-D4…+Dn=(一个可以求的值)
把这两个式子相加除以二就可以求得偶数项的求和值,就是我们要的答案。
上面说的可以求的值就是 ( 【(p-2q)/p】^n+1)/2;
不太会用公式编译器,大家将就这看吧。
最后值得说的是,最后这道题目还是那个看错题目的队友AC的。
(๑•̀ㅂ•́) ✧

如果看不懂,可以在评论区留言,近期会尽快回复

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;

const ll  mod=1e9+7;

ll fast_pow(ll base,ll k)
{
    ll ans=1;
    while (k) {
        if (k&1)
          ans=ans*base%mod;
        base=base*base%mod;
        k>>=1;
    }
    return ans;
}
int main()
{
    int t;
    scanf("%d",&t);
    while (t--) {
        ll p,q,k;
        scanf("%lld%lld%lld",&p,&q,&k);
        ll ans=(p-2*q)*fast_pow(p,mod-2)%mod;
        ans=fast_pow(ans,k);
        ans=ans+1;
        ans=(ans%mod+mod)%mod;
        ans=ans%mod*fast_pow(2,mod-2)%mod;
        printf("%lld\n",ans);
    }
    return 0;
}


全部评论

相关推荐

07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务