逆元
抽卡
https://ac.nowcoder.com/acm/problem/205461
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
ll power(ll a,ll b){
ll res=1;
while(b){
if(b&1)res=res*a%mod;
b>>=1;
a=a*a%mod;
}
return res;
}
long long gcd(long long x,long long y){
if(y==0) return x;
return gcd(y,x%y);
}
int main(){
int n;
cin>>n;
long long c=1,d=1;
long long a[100005],b[100005];
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
for(int i=0;i<n;i++){
c=(c%1000000007)*(a[i]-b[i])%1000000007;
d=(d%1000000007)*a[i]%1000000007;
}
long long e=gcd(c,d);
c=c/e%mod;
d=d/e%mod;
cout<<(mod+1-c%mod*power(d,mod-2)%mod)%mod<<endl;
}
查看15道真题和解析