2010年4月15日 星期四

Problem 11636 Hello World!,複製貼上

此題是說目前有一行 printf("Hello World!") 的程式碼,但我們需要有 n 行,需複製貼上幾次。

因為行數是以 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題庫目錄
回首頁

沒有留言: