c语言的一道题

2025-07-04 12:08:31
推荐回答(1个)
回答1:

这些以身试毒的奴隶,就是一堆bit,1到N这些数字对应酒的编号,所有bit0(化成二进制,最低位是0bit)是1的数字,都给一个人喝;所有bit1是1的数字,依次类推,这样到20小时后,所有中毒奴隶代表的bit组成的数,就是有毒那瓶酒。
如果酒的数量恰好是2的整数次幂,拿走编号最大的那瓶,剩下的按同样方法做。
例:
3瓶酒,要2个人,编号为0和1,0喝最低位是1的酒,即1号瓶和3号瓶
1喝bit1是1的酒,即2号瓶喝3号瓶
这样,结果显而易见,最终中毒的bit是1,没中毒的是0,这个二进制数就是要找的那瓶酒的编号。