阿美的新難題 二分法)

2021-09-18 06:06:39 字數 807 閱讀 2058

阿美的老師要對天才少女阿美進行極限測試,老師隨便給出乙個整數m和若干個遞增排序的整數序列(裡面有好多好多數啊!),老師要求阿美快速觀察並回答出在這個遞增的整數序列中是否存在兩個不相同的數a和b,滿足a+b=m,如果存在則給出這兩個數,否則說no。阿美思來想去無法解決,請你幫幫她吧,她可是個校花啊!

第一行是整數n(0 < n <= 100,000)。 

第二行是n個遞增排序的整數。整數的範圍是在0到10^8之間。 

第三行是乙個整數k(0 < k <= 100),代表有k次查詢。

接下來有k行,每行乙個整數m(0 <= m <= 10^9)。

k行,每行對應乙個整數m的劃分結果。對於每乙個m,在給出的n個遞增排序的整數中若存在和為m的兩個不相同的數,輸出這兩個整數。若存在多個兩個整數之和等於m的情況,則選擇較小的數更小的那一對。若在n個數中找不到和為m的兩個不相同的整數,則輸出no。

5

2 3 4 5 547

4610

2 5

no2 4

no

普通方法會超時。

用二分法,注意迴圈陣列時,要從當前下標開始查詢

(我是從0開始找的,十多遍都不對)

#includeint search(int a,int x,int low,int high)

else

if(xelse

}}int main()

} if(flag!=-1)

else

}return 0;

}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...