原题看我
题解
如果能把多块玻璃合并到一起多棒啊,但是直接把多块合并似乎不太可能,考虑两两合并
也就是已知上下层玻璃的透光率分别为\(a_1\%\)和\(a_2\%\),反射率分别为\(b_1\%\)和\(b_2\%\),求一块等效的玻璃,使得它和两块玻璃叠在一起的效果相同
(有一点要注意一下,就是合并后的玻璃上下的反射率和透光率不一定相同,我们需要根据合并的方向来判断要计算的是哪一个)
也就是下面这两幅图,为了方便,将\(x\%\)省略成\(x\)
1.
即合并后的透光率为\(a_1a_2\sum\limits_{i=0}^{\infty}(b_1b_2)^i=\frac{a_1a_2}{1-b_1b_2}\)
2.
即合并后的(向下的)反射率为\(b_2+a_2^2b_1\sum\limits_{i=0}^{\infty}(b_1b_2)^i=\frac{a_2^2b_1}{1-b_1b_2}+b_2\)
(P.S. 图中左下角的那个应该是\(b_2\))
这样我们就可以\(O(n)\)的递推了
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include