牛客小白月赛9 A签到(分数取模,逆元)

传送门

对分母求一下逆元,把除法取模变成乘法取模,逆元介绍看这里

这种方法只适合模为质数的情况

 #include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+;
long long quickpow(long long a, long long b) {
if (b < ) return ;
long long ret = ;
a %= mod;
while(b) {
if (b & ) ret = (ret * a) % mod;
b >>= ;
a = (a * a) % mod;
}
return ret;
}
long long inv(long long a) {
return quickpow(a, mod - );
}
int main()
{
int n;
while(~scanf("%d",&n))
{
long long ans=;
for(int i=; i<n; i++)
{
long long a,b;
scanf("%lld %lld",&a,&b);
ans=((ans*(b-a)%mod)*inv(b))%mod;//本来是(b-a)/b.这里算的是不被砸到的概率
// printf("%lld\n",ans);
}
printf("%lld\n",(+mod-ans)%mod);//输出被砸到的概率
}
return ;
}
上一篇:winfrom 操作Excel


下一篇:Python笔记(十四):操作excel openpyxl模块