在程式員面試的時候面試官有時會考我們一些計算機編程方面的智力題,這便是一道有趣的智力題,這道題考察了我們對bit位的靈活運用,
首先1000與1024相差無幾,于是我們可以用10個bit位來對這1000瓶藥物進行編號,也就是將第n瓶藥物的編號轉化為對應的二進制,

然后我們拿10個空瓶編號為(10)(9)(8)(7)(6)(5)(4)(3)(2)(1),將二進制的第一位(最右邊的為第一位)為1的瓶子每瓶取一滴藥水裝入編號為(1)的瓶子,將二進制的第二位為1的瓶子每瓶取一滴藥水裝入編號為(2)的瓶子,以此類推,
最后用10只老鼠編號為10,9,8,7,6,5,4,3,2,1喝下對應編號瓶子的藥水,一個星期后檢查老鼠的存活情況,

一個星期后死了的老鼠對應位置為1,存活的老鼠對應位置數字為0,于是就組成了一個二進制數字,而這個對應的二進制數字所對應的十進制數字就是那瓶有毒藥物的編號,
那這其中的道理是什么呢?因為老鼠只要服用任意量有毒藥水就會在一個星期內死亡,而只要喝了有毒藥水編號所對應的二進制的位數為1的藥水的老鼠必定會死亡,喝了有毒藥水編號所對應的二進制的位數為0的藥水的老鼠不會死亡,所以最后老鼠所組成的二進制數字就對應那瓶有毒的藥水,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253174.html
標籤:其他
上一篇:六大頂級編程學習網站
