problem description
當寒月還在讀大一的時候,他在一本武林秘籍中(據後來考證,估計是計算機基礎,狂汗-ing),發現了神奇的二進位制數。
如果乙個正整數m表示成二進位制,它的位數為n(不包含前導0),寒月稱它為乙個n二進位制數。所有的n二進位制數中,1的總個數被稱為n對應的月之數。
例如,3二進位制數總共有4個,分別是4(100)、5(101)、6(110)、7(111),他們中1的個數一共是1+2+2+3=8,所以3對應的月之數就是8。
input
給你乙個整數t,表示輸入資料的組數,接下來有t行,每行包含乙個正整數 n(1<=n<=20)。
output
對於每個n ,在一行內輸出n對應的月之數。
sample input31
23sample output13
8分析:
1二進位制數有1個: 1
2二進位制數有2個:10 11
3二進位制數有4個:100 101 110 111
4二進位制數有8個:1000 1001 1010 1011 1100 1101 1110 1111
可以看到第n二進位制數是第(n-1)二進位制數 總數目的2倍,他們第一位都是1,所以多出來2n個1。
所有的數字中,一半是在1後邊加了第(n-1)二進位制數。另一半第一位是1,第二位是0,最後的各個位跟第(n-1)二進位制數中最後個各個位都相同,令f[n]表示第n二進位制數中1的個數。所以多出來 f[n-1] + (f[n-1] - 2n-1) = 2*f[n-1]-2n-1
所以可以推導出:f[n] = 2n + 2*f[n-1] -2n-1 = 2n-1 + 2*f[n-1]
**如下:
1 # include2int f[21]=;
3void
init()9}
10int
main()
19return0;
20 }
杭電2502 遞推) 之 月之數
description 當寒月還在讀大一的時候,他在一本武林秘籍中 據後來考證,估計是計算機基礎,狂汗 ing 發現了神奇的二進位制數。如果乙個正整數m表示成二進位制,它的位數為n 不包含前導0 寒月稱它為乙個n二進位制數。所有的n二進位制數中,1的總個數被稱為n對應的月之數。例如,3二進位制數總共...
關於錢幣之月
最近經常有人在qq裡發下面這個資訊 2010年的10月份是個不尋常的月份,這個月份中有5個星期五,5個星期六,5個星期日,這種情況需要823年後才能再次出現,這種月份被認為是錢幣之月,如果把這個訊息傳送給包括我在內的8位好朋友,4天以後就會有錢幣上的收穫,這是風水學上的理論,如果不去傳送將會丟失成功...
HDU之演算法初步
sort函式在c 的algorithm庫 sort addr1,addr2,cmp 表示從大到小排序,表示從小到大排序 struct s bool cmp s s1,s s2 s ss n sort ss,ss n,cmp include include includeusing namespace...