概述
传送门
对分母求一下逆元,把除法取模变成乘法取模,逆元介绍看这里
这种方法只适合模为质数的情况
1 #include<bits/stdc++.h> 2 using namespace std; 3 const long long mod=1e9+7; 4 long long quickpow(long long a, long long b) { 5 if (b < 0) return 0; 6 long long ret = 1; 7 a %= mod; 8 while(b) { 9 if (b & 1) ret = (ret * a) % mod; 10 b >>= 1; 11 a = (a * a) % mod; 12 } 13 return ret; 14 } 15 long long inv(long long a) { 16 return quickpow(a, mod - 2); 17 } 18 int main() 19 { 20 int n; 21 while(~scanf("%d",&n)) 22 { 23 long long ans=1; 24 for(int i=0; i<n; i++) 25 { 26 long long a,b; 27 scanf("%lld %lld",&a,&b); 28 ans=((ans*(b-a)%mod)*inv(b))%mod;//本来是(b-a)/b.这里算的是不被砸到的概率 29 // printf("%lldn",ans); 30 } 31 printf("%lldn",(1+mod-ans)%mod);//输出被砸到的概率 32 } 33 return 0; 34 }
转载于:https://www.cnblogs.com/fqfzs/p/9978123.html
最后
以上就是开放大侠为你收集整理的牛客小白月赛9 A签到(分数取模,逆元)的全部内容,希望文章能够帮你解决牛客小白月赛9 A签到(分数取模,逆元)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复