題目連結(jié):
題目大意:
一開始有一行可以印出「Hello, world!」的程式碼。現(xiàn)給定一正整數(shù)N(0 < N < 10, 001),求最少要複製貼上幾次才能印出N次的「Hello, world!!」(一次可以複製現(xiàn)有程式碼的任意行數(shù))。
當(dāng) N 為負(fù)數(shù)時,停止程式。
範(fàn)例輸入:
2
10
-1
範(fàn)例輸出:
Case 1: 1
Case 2: 4
解題思維:
經(jīng)過一些觀察,我們可以發(fā)現(xiàn)當(dāng)N:
= 1 時,次數(shù)為 0 。
= 2 時,次數(shù)為 1 。
= 3 、 4 ,次數(shù)為 2 。
= 5 ~ 8 ,次數(shù)為 3 。
……
因此當(dāng) 2 ^ ( t - 1 ) + 1 ≦ N ≦ 2 ^ t ,次數(shù)為 t 。
所以我們可以藉由取以 2 為底的對數(shù)(log),並將其數(shù)值取上高斯(無條件進(jìn)位)。即可找到上式的 t 值,最後輸出即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。