二分猜數遊戲實現 coin1

2021-08-29 23:12:24 字數 1640 閱讀 1771

這題需要在時間限制內贏100次二分猜數遊戲。

記得資料結構課上老師就說過,二分查詢的實現還是很容易錯的。一開始寫的版本總是用光次數猜不對。

網速比較慢的話就得先用其他題的賬戶登上去然後本地連線到9007埠執行。

from pwn import

*sh = remote(

'pwnable.kr'

,9007

)sh.recvuntil(

'starting in 3 sec'

)print

'waiting for 3 sec to start ...'

defplay_round()

: sh.recvuntil(

'n='

) n =

int(sh.recvuntil(

' ')

)print

'n=%d'

% n sh.recvuntil(

'c='

) c =

int(sh.recvuntil(

'\n'

).replace(

'\n',''

).rstrip())

print

'c=%d'

% c # binary search

lo =

0 hi = n-

1 cnt =

0 re =-1

while lo < hi:

cnt +=

1 mi = lo +

(hi - lo)/2

guess =

' '.join(

[str

(i)for i in

range

(lo, mi+1)

])# print 'test #', cnt, 'range: [%4d, %4d]' % (lo, hi), 'guess: [%4d, %4d]', lo, mi

sh.sendline(guess)

re =

int(sh.recvline())

# print 'ret:', re

if re <10*

(mi - lo +1)

: hi = mi

else

: lo = mi+

1while cnt < c:

cnt +=

1 sh.sendline(

str(lo)

) re =

int(sh.recvline())

print

'aha! found:'

, lo,

'sending...'

sh.sendline(

str(lo)

)print sh.recvuntil(

'\n'

)# receive "congraduate (#round_number)"

win =

0while win <

100:

play_round(

) win +=

1sh.interactive(

)

猜數字遊戲,二分查詢 ,輸密碼遊戲

1.完成猜數字遊戲 首先這個 要先理解他如何猜數字。不可能是在 中寫乙個數,你來猜它吧。所以你得有乙個可以產生隨機數的函式。也就是rand 所以接下來就好寫了。只要通過迴圈比較來告訴它值低了 還是 高了 我是通過函式來實現的,乙個輸出函式,乙個遊戲函式。結合起來。define crt secure ...

猜數字遊戲 二分查詢顯威力

規則就像剛才說的一樣,現在開始猜數字,假設待猜數字為57,讓我們先用之前的猜法試一下,乙個乙個猜,從1開始,這樣猜的話,最少得猜57次,6要是99的話,得猜99次,現在讓我們試一下從中間開始的猜法。從50開始,則猜數過程如下 50 小了 75 大了 63 大了 57 猜對了 從以上過程可以看出,從中...

1 猜數字遊戲 2 二分查詢 3 模擬使用者登入

猜數字遊戲 void eumn void game else if num tem else intmain else if choice 0 else while 1 system pause return0 二分查詢,找到了返回該數字的下標 intbinarysearch int arr,int...