本着 正难则反的原则。
容易知道求抽到的概率很麻烦。
那么我们求反就好了,也就是求失败的概率。
失败就是每次都抽不到。
容易知道每次失败的概率就是图片说明
然后进行累乘就好了。因为模数是质数,逆元可以用费马小定理得出。

最后成功的概率就是(1-ans+mod)%mod

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll qpow(ll a,ll b){
    ll ans=1;
    while(b){
        if(b&1) ans=ans*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return ans;
}
int main(){
    int n;cin>>n;
    vector<ll> a(n+1),b(n+1);
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    ll ans=1;
    for(int i=1;i<=n;i++){
        ans=ans*((a[i]-b[i])%mod*qpow(a[i]%mod,mod-2)%mod)%mod;
    }
    cout<<(mod+1-ans)%mod<<endl;
    return 0;
}