zj与jmy玩游戏

 1 Sec 32 MB |  显示标签
811
通过提交

题目描述

回答出zs问题的jmy,开心的找到zj说道他和zs玩游戏的过程,zj表示你这么厉害,那咱们也来玩玩石头剪刀布的游戏?jmy同意了。了解zj具有观星象的占卜能力的jmy提出了新的要求,咱们玩石头剪刀布游戏要现在就开始不能等到明天。zj同意了,但是为了增加难度,提出每轮要在纸上随机先写出n个字符只包含"SRC"(表示剪刀石头布),然后一起展示出自己写好的字符,各个位置对应,只有jmy赢了大于一半,这一轮才算jmy赢。只要jmy能够赢zj一轮,游戏就结束。聪明的你能不能帮jmy计算出游戏持续轮数的期望。

输入格式

第一行包含整数T,表示多组测试。(1<=T<=10)
接下来T行,每行包含一个整数n,表示一次性在纸上随机写下的字符个数。(1<=n<=105)

输出格式

对于每组测试,输出当一轮游戏要输出n个字符的时候,这个游戏能够持续的轮数的期望,答案对1000000007取模。

样例输入 #1

3
1
2
3

样例输出 #1

3
9
857142867

提示

mod=1000000007。
我们将整数的除法在取模意义下定义为p/q=p*q的逆元%mod(q的逆元为q^(mod-2)),不难发现这样的定义对于原来的交换律结合律等运算律同样适用。
假设期望是p/q,那么输出p*q的逆元,也就是说输出p*q^(mod-2)%mod。

该题可能要用到以下快速幂函数,计算a^b%mod。
typedef long long ll;
ll qpow(ll a,ll b,ll mod)//a是底数,b是指数,mod是模数
{
    ll ans=1;
    while(b)
    {
        if(b%2)ans=ans*a%mod;
        a=a*a%mod;
        b/=2;
    }
    return ans;
}
比如1/2=1*qpow(2,mod-2,mod)%mod=500000004

样例3中是27/7

假设n!=fac[n](mod 1e9+7)

那么组合数

C(n,m)=fac[n]*qpow(fac[m],mod-2)*qpow(fac[n-m],mod-2)

来源

Author zj

 上传者
coach
 创建时间
2018-11-06 19:34
 修改时间
2018-11-10 20:42