Source Code
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define FAST ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define INF INT_MAX
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define nl "\n"
using namespace std;
const ll MOD  = 1e9+7;
const int mxN = 2e5+1;
ll n ;
ll p[mxN] , q[mxN];
ll woRepwoOrd(ll n , ll m){
    if(m == 0 )return 1;
    ll ans = 1;
    for(ll i = n ; i>max(n-m , m) ;i--){
        ans = ((ans%MOD)*(i%MOD))%MOD;
    }
    ll k = 1 ;
    for(ll i= min(n-m , m); i>1;i--){
        k = ((k%MOD)*(i%MOD))%MOD;
    }
    ans/=k;
    return ans ;
}
int main()
{
    FAST
    //==================
    ll t = 1 ;
    //cin >> t;
    while(t--){
        cin >> n;
        for(int i=1 ;i<=n;i++)cin >>p[i];
        for(int i=1 ;i<=n;i++)cin >>q[i];
        ll moves = 0 ;
        ll ans =0 ;
        bool is =1 ;
        for(int i=1 ;i<=n;i++){
            if((q[i] - p[i])%i != 0){
                is=0;
                break;
            }else{
                moves+=(q[i] - p[i])/i;
            }
        }
        if(!is){
            cout << 0 << nl;
        }else{
            cout << woRepwoOrd(moves , n) << nl;
        }


    }

}
Copy
N-dimensions Imam Droubi
GNU G++17
63 ms
3.4 MB
Wrong Answer