Submission #19414

#TimeUsernameProblemLanguageResultExecution timeMemory
19414kdh9949Σ (kriii4_P2)C++98
100 / 100
6 ms1396 KiB
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;

int n;
ll a[10010], b[10010], pfmul[10010], sfmul[10010];
ll ansa, ansb;
ll mod = 1000000007;

ll pw(ll x, ll k){
    if(k == 0) return 1;
    if(k == 1) return x;
    ll t = pw(x, k / 2); t *= t; t %= mod;
    if(k % 2) return t * x % mod;
    return t;
}

ll modinv(ll x){
    return pw(x % mod, mod - 2);
}

int main(){
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        scanf("%lld%lld", b + i, a + i);
    }
    ansb = 1;
    for(int i = 1; i <= n; i++){
        ansb *= b[i];
        ansb %= mod;
    }
    pfmul[0] = sfmul[n + 1] = 1;
    for(int i = 1; i <= n; i++) pfmul[i] = pfmul[i - 1] * b[i] % mod, sfmul[n + 1 - i] = sfmul[n + 2 - i] * b[n + 1 - i] % mod;
    for(int i = 1; i <= n; i++){
        ansa += pfmul[i - 1] * a[i] % mod * sfmul[i + 1] % mod;
        ansa %= mod;
    }
    printf("%lld\n", (ansa * modinv(ansb)) % mod);
}
#Verdict Execution timeMemoryGrader output
Fetching results...