1. 程式人生 > >牛客小白賽-簽到

牛客小白賽-簽到

你在一棟樓房下面,樓房一共有n層,第i層每秒有pi的概率會扔下一個東西並砸到你
求第一秒內你被砸到的概率

輸入描述:

第一行一個整數n
之後有n行,第i+1行有兩個整數ai,bi,表示

輸出描述:

設答案為,你只需要找到一個最小的非負整數T,使得
輸出這個T就行了

示例1

輸入

複製

2
1 2
1 2

輸出

複製

750000006

說明

一共只有如下狀態:

1. 第一層和第二層都扔了下來

2. 第一層扔了下來

3. 第二層扔了下來

4. 第一層和第二層都沒有扔下來

以上四種都是等概率發生的

除了第四種情況外,都會被砸到

因此被砸到的概率是 3/4,這個值在模1e9+7意義下就是750000006

備註:

資料範圍
0 ≤ n ≤ 105
1 ≤ ai ≤ bi ≤ 105
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;

ll qpow(ll a,ll b){
    ll ans=1;
   while(b){
   	 if(b&1){
       ans=a*ans%mod;
    }
    a=a*a%mod;
    b/=2;
   }
    return ans;
}


int main(){
    int n;
    cin>>n;
    int ans=1;
    while(n--){
         int x,y;
        cin>>x>>y;
        x=y-x;
       ans=(ans*(x*(qpow(y,mod-2))%mod)%mod)%mod;
    }
    cout<<(1-ans+mod)%mod<<endl;
}
n = int(input())
ans = 1
mod = int(1e9+7)
for i in range(n):
    a,b = map(int,input().split(' '))
    ans *= (b-a)*pow(b,mod-2,mod)
 
print((1-ans)%mod)