Hacking Numbers (Every Version)
C1. Hacking Numbers (Easy Version)
首先考慮 digit 這個(gè)操作可以將未知數(shù) \(x\) 的值域減小很多。在兩次 digit 過(guò)后,數(shù)的值域?yàn)?\([1,16]\),接下來(lái)我們希望它變成一個(gè)固定的數(shù),我們知道,減操作如果為非正數(shù)就不會(huì)進(jìn)行,利用這點(diǎn),我們可以對(duì)原數(shù)二進(jìn)制拆分考慮,二進(jìn)制下從大到小減去它的每一位為一即可。這個(gè)時(shí)候?qū)τ谒兄挥幸晃坏臄?shù),會(huì)減去二進(jìn)制下那一位右邊所有的一,從而變成一,我們 \(16\) 也同樣是這樣,于是只需要減 \(4\) 次就行。你也可以這么考慮,一開(kāi)始值域?yàn)?\([1,16]\),為了最快縮小值域,每次,我減一半,值域就變成 \([1,8],[1,4],[1,2],[1,1]\)。最后都會(huì)變成 \(1\),加上 \(n-1\) 就行。加起來(lái)正好七步。

浙公網(wǎng)安備 33010602011771號(hào)