链接:https://ac.nowcoder.com/acm/contest/275/A
来源:牛客网
你在一栋楼房下面,楼房一共有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)