乘法逆元问题。题目说明了是要求模意义下的概率,直接快速幂乘法逆元的板子求出一个00111的概率,总的可能的00111的数目就是n-4。注意题目范围n>1,因此要对n<5特判,直接输出0。
#include<bits/stdc++.h>
using namespace std;
using ll =long long;
ll mod=1e9+7;
const int N=1e5+10;
ll q(ll a,ll b,ll p){
ll res=1;
while(b){
if(b%2==1){
res=(res*a)%p;
}
a=(a*a)%p;
b/=2;
}
return res;
}
ll js(ll x,ll y){
return (x*q(y,mod-2,mod)+mod)%mod;
}
int main(){
int t;cin>>t;
while(t--){
ll a;ll b;ll n;
cin>>a>>b>>n;
if(n<5){
cout<<"0"<<endl;
continue;
}
ll c=b-a;
ll d=1;
ll e=(d*js(c,b)+mod)%mod;
ll f=(e*js(c,b)+mod)%mod;
ll g=(f*js(a,b)+mod)%mod;
ll h=(g*js(a,b)+mod)%mod;
ll i=(h*js(a,b)+mod)%mod;
ll ans=(i*(n-4)+mod)%mod;
cout<<ans<<endl;
}
return 0;
}

京公网安备 11010502036488号