Description
n,q≤6∗105,max{ai}≤109,ans精度要求小於10−6
Solution
當min{ai}≤x時,ans恆爲1,
剩下的顯然的有:
Ansi=1−∏(1−xai)
考慮取對數後泰勒展開,
ln(1−xai)=−j=1∑j∗xjaij
這樣就可以對一個區間一起處理了,預處理前幾項即可,
然而這樣精度可能還有點不夠,考慮進一步提升精度:
定義閾值LI,
對於xai≥LI的位置,特殊提出來處理,因爲就是這樣的位置導致精度不夠的,
原因:恆有xai<1,隨着次數j的增加,(xai)j是衰減的,當xai較大時,它的衰減的很慢,也就是出現精度不夠情況了,
LI=0.5就差不多了,
可以證明,這樣的位置沒有很多,因爲xai較大意味着1−xai較小,所以如果很多的話很快就衰減到精度以下了