在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  Java/ 請(qǐng)說(shuō)明下面網(wǎng)易面試編程題目的解決思路

請(qǐng)說(shuō)明下面網(wǎng)易面試編程題目的解決思路

小易準(zhǔn)備去魔法王國(guó)采購(gòu)魔法神器,購(gòu)買魔法神器需要使用魔法幣,但是小易現(xiàn)在一枚魔法幣都沒(méi)有,但是小易有兩臺(tái)魔法機(jī)器可以通過(guò)投入x(x可以為0)個(gè)魔法幣產(chǎn)生更多的魔法幣。
魔法機(jī)器1:如果投入x個(gè)魔法幣,魔法機(jī)器會(huì)將其變?yōu)?x+1個(gè)魔法幣
魔法機(jī)器2:如果投入x個(gè)魔法幣,魔法機(jī)器會(huì)將其變?yōu)?x+2個(gè)魔法幣
小易采購(gòu)魔法神器總共需要n個(gè)魔法幣,所以小易只能通過(guò)兩臺(tái)魔法機(jī)器產(chǎn)生恰好n個(gè)魔法幣,小易需要你幫他設(shè)計(jì)一個(gè)投入方案使他最后恰好擁有n個(gè)魔法幣。
輸入描述:
輸入包括一行,包括一個(gè)正整數(shù)n(1 ≤ n ≤ 10^9),表示小易需要的魔法幣數(shù)量。

輸出描述:
輸出一個(gè)字符串,每個(gè)字符表示該次小易選取投入的魔法機(jī)器。其中只包含字符'1'和'2'。

輸入例子1:
10

輸出例子1:
122

看到他提供的例子我發(fā)現(xiàn)我的理解有誤,我理解題目是投入10,得到先操作機(jī)器1再操作機(jī)器2再次操作機(jī)器2的輸出,我的思路是例如我投入了10個(gè)魔法石,通過(guò)機(jī)器1相當(dāng)于是210+1得到21,利用這個(gè)21投入機(jī)器2相當(dāng)于221+2得到44,再次利用44投入機(jī)器2相當(dāng)于2*44+1得到89,到這里已經(jīng)亂了

回答
編輯回答
愛(ài)礙唉

你確實(shí)理解錯(cuò)意思了。給的 n 是最后要生成的魔法幣數(shù)量,是從最開(kāi)始的 0 個(gè),怎么使用 1 和 2 這 2 個(gè)魔法機(jī)器生成 n。

解法:
1 號(hào)機(jī)器是 2x+1,是一個(gè)奇數(shù);2 號(hào)機(jī)器是 2x+2,是一個(gè)偶數(shù)。所以可以考慮從后往前推。比如給的示例 10,最后一步只能通過(guò) 2 號(hào)機(jī)器獲得,用 (10 - 2)/ 2 得到倒數(shù)第二步的結(jié)果是 4;說(shuō)明還是用 2 號(hào)機(jī)器,用 (4 - 2)/ 2 得到倒數(shù)第三步的結(jié)果是 1;是奇數(shù),那肯定是用 1 號(hào)機(jī)器了。

最后將結(jié)果反過(guò)來(lái),就是 122 了

2017年8月18日 12:28