因為行數是以 2 倍在成長的,所以這題是在問說 n 在 2m-1 < n <= 2m 之間,求 m 為多少,其實用 log() 做就可以了,再用 ceil (無條件進位)就可以了, C 語言程式碼如下:
if (n != 1) printf("Case %d: %d\n", ++ j,
(int)ceil(log((double)n)/log(2)));
else printf("Case %d: 0\n", ++ j) ;
By David.K
p11636題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言