這題是交互題……
oj現在不支持交互題……
所以直接在這講講題目大意吧。
有個分數yx,你可以詢問一個質數P,可以得到yx在模P意義下的值。
最多可以詢問5次。
數字的範圍都在[1,1e9]
多組數據,數據最多105組。
正解
只需要詢問兩個質數P1=1e9+7和P2=1e9+9,通過中國剩餘定理可以求出yx在模P1P2意義下的值。
這時候yx是唯一確定的。
證明考慮如果有y1x1和y2x2不相等但在模意義下相等,那麼x1y2≡x2y1(modP1P2)
由於P1P2>1e18,x1y2,x2y1≤1e18,所以如果它們模意義下相等,那麼它們實際上也相等。
矛盾。
現在寫成這樣:yx=a(modP)
化一下就是x=ay−kP,兩邊除以Py就是Pyx=Pa−yk
x≤1e9的解只有一個,具體怎樣理解可以結合上面的性質。
由於Py太大(大於1e18)了,趨近於0。於是我們要做的就是找到yk,使其儘量逼近Pa。
題解做法:
在Stern-Brocot Tree上二分。
直接一個一個走可能會時間超限。發現拐點有O(lg1e9)個,於是走的過程中可以二分它往某個方向最多走多少步。
此外還有隔壁的爆標算法,推一波類歐。
具體是解這樣的不等式:l≤axmodp≤r,類歐推一下。