Source Code
#include<iostream>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<set>
//#include<bits/stdc++.h>
using namespace std;
long long fpow(long long x, long long n, int mod)
{
    if (n == 0)return 1 % mod;
    if (n == 1) return x % mod;
    long long ans = fpow(x, n / 2, mod);
    ans = ans * ans % mod;
    if (n & 1)ans = ans * x % mod;
    return ans;
}

long long f[1000000];
long long mod = 1e9+7;
void fact()
{
	f[1] = 1;
	for (int i = 2;i <= 200005+7;i++)
		f[i] = ((i%mod) *( f[i - 1]%mod))%mod;
}
long long x;
int main()
{

    std::ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    cout.tie(NULL);
    fact();
    int n;
    cin>>n;
    vector<long long >a(n),b(n);
    for(int i=0;i<n;i++)
      cin>>a[i];
      
     for(int i=0;i<n;i++)
      cin>>b[i];
      
      long long ans=1,g=0;
      
      for(int i=0;i<n;i++)
      {
             if(a[i]>b[i])
             {
                     cout<<0;
                     return 0;
                     
             }
             
         x=(b[i]-a[i])/(i+1);
              //cout<<x<<"\n";
              g+=x;
             ans=((ans%mod)*(f[x]%mod)%mod);
      }
      
      if(ans==0)
      cout<<0;
      else
     cout<< (f[g] * fpow(ans,mod-2,mod))%mod;
   
    
   

}
Copy
N-dimensions shima_176
GNU G++17
76 ms
5.0 MB
Wrong Answer