[BJOI2019]光线
题号:NC50756
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收。
设对于任意x,有单位的光会穿过它,有的会被反射回去。
现在n层玻璃叠在一起,有1单位的光打到第1层玻璃上,那么有多少单位的光能穿过所有n层玻璃呢?

输入描述:

第一行一个正整数n,表示玻璃层数。
接下来n行,每行两个非负整数a_i,b_i,表示第i层玻璃的透光率和反射率。

输出描述:

输出一行一个整数,表示穿透所有玻璃的光对取模的结果。
可以证明,答案一定为有理数。设答案为a/b(a和b是互质的正整数),你输出的答案为x,你需要保证
示例1

输入

复制
2
50 20
80 5

输出

复制
858585865

说明

img
如图,光线从左上角打进来,有0.5单位的光穿过第1层玻璃,有0.2单位的光被反射回去。这0.5单位的光有0.4单位穿过第2层玻璃,有0.025单位的光被反射回去。这0.025单位的光有0.0125单位穿过第1层玻璃,有0.005单位的光被反射回去。这0.005单位的光有0.004单位穿过第2层玻璃……于是,穿过两层玻璃的光一共有0.40404...= \frac{40}{99}单位。在模10^9+7意义下等于858585865。

示例2

输入

复制
3
1 2
3 4
5 6

输出

复制
843334849

备注:

对于的数据,保证n=1。
对于的数据,保证
对于的数据,保证
对于的数据,保证
对于的数据,保证
对于的数据:
每组a_ib_i在满足上述限制的整数中随机生成。显示分类标签