题目链接:https://nanti.jisuanke.com/t/17115
题意:Bob有一个不均匀的硬币,正面朝上的概率是,将硬币抛k次,问正面朝上的次数是偶数的概率是多少?
假设答案为,打印(X∗Y−1)mod(109+7).
本题涉及两个知识点幂取模(分治法)和用费马小定理求逆元(在模p时a的逆元就是a^(p-2)).
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll solve(ll a,ll b){
ll ans=1;
while(b){
if(b%2)
ans=ans*a%mod;
a=a*a%mod;
b=b/2;
}
return ans;
}
int main(){
int t;
ll p,q,k;
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld",&p,&q,&k);
ll ans=(p-2*q)*solve(p,mod-2)%mod;
ans=solve(ans,k);
ans+=1;
ans=ans*solve(2,mod-2)%mod;
printf("%lld\n",ans);
}
return 0;
}