萌新带你开车上p站(三)(5)
2022-11-12 来源:acgdir.com
0x10
按照要求连接服务器
这是一个小游戏
大意是一堆货币里有真币假币,两者重量不同,真币10g,假币9g。给你N个硬币,C次机会,让你猜哪一个是假币。需要在30s的时间里才对100次。
这题其实考的是算法。
分治法解决
举个例子。
一共100个硬币,其中1个是假的,先称重1-49,如果结果整除10,则假币在50-100.
第二轮称50-75,如果不整除10,则假币在其中
第三轮称50-62.。。。。
其实就是简单的二分法
编程
import time
from pwn import *
conn = remote("0", 9007)
conn.recv(10000)
for _ in range(100)://猜100次
line = conn.recv(1024).decode("UTF-8").strip().split(" ")
print(line)
n = int(line[0].split("=")[1])//读出给的n,c
c = int(line[1].split("=")[1])</span></p></div><div class="index-module_textWrap_3ygOc index-module_newStyle_lg-fl "><p><span class="bjh-p">left = 0</span></p></div><div class="index-module_textWrap_3ygOc index-module_newStyle_lg-fl "><p><span class="
按照要求连接服务器
这是一个小游戏
大意是一堆货币里有真币假币,两者重量不同,真币10g,假币9g。给你N个硬币,C次机会,让你猜哪一个是假币。需要在30s的时间里才对100次。
这题其实考的是算法。
分治法解决
举个例子。
一共100个硬币,其中1个是假的,先称重1-49,如果结果整除10,则假币在50-100.
第二轮称50-75,如果不整除10,则假币在其中
第三轮称50-62.。。。。
其实就是简单的二分法
编程
import time
from pwn import *
conn = remote("0", 9007)
conn.recv(10000)
for _ in range(100)://猜100次
line = conn.recv(1024).decode("UTF-8").strip().split(" ")
print(line)
n = int(line[0].split("=")[1])//读出给的n,c
c = int(line[1].split("=")[1])</span></p></div><div class="index-module_textWrap_3ygOc index-module_newStyle_lg-fl "><p><span class="bjh-p">left = 0</span></p></div><div class="index-module_textWrap_3ygOc index-module_newStyle_lg-fl "><p><span class="