例如:137=2^7+2^3+2^0,約定a^b可表示為a(b),則137可表示為:2(7)+2(3)+2(0),進一步7=2^2+2+2^0,3=2+2^0。所以137最終可以表示為2(2(2)+2+2(0))+2(2+2(0))+2(0)。
輸入:正整數(n<=20 000).
輸出:符合約定的n的0,2表示(在表示中不能有空格)。
演算法設計:由於不知道資料的位數,加上對資料還是從低位到高位的操作比較簡單,而輸出顯然是由高位到低位進行的,這是就要考慮用遞迴機制實現演算法了。
//n為運算元,r為遞迴深度
void fun(int n, int r)
else
}}
經過上面的處理,如果輸入fun(137,0),則輸出為2(7)+2(3)+2(0)。
這時,如果對7和3遞迴處理,則為滿足題意的輸出。如下**所示:
//n為運算元,r為遞迴深度
void fun(int n, int r)
}else}}
}
經過上面的處理,如果輸入fun(137,0),
則輸出為2(2(2)+2+2(0))+2(2+2(0))+2(0)。
判斷乙個正整數是2的n次
判斷乙個正整數是2的n次,假設不包括0。想了三種辦法。第一種 任意乙個數,如果是1,則為2的n次,如果大於1,則1 判斷該數是否為偶數,是則轉2,否則不是2的n次。2 判斷該數是否為2,是則為2的n次,否則對2做整除運算後轉1。在devc 上進行了實現,如下 include using namesp...
如何判斷乙個正整數是否是4的冪?
4的冪具有的性質 4的冪用二進位制可表示為長度為奇數 2的偶數次冪 且只有首位為1的形式。證明 4n 22 n 22 n 4的冪減去1是3的倍數。證明 4n 1 3 n 1 3cn 1n 32cn 2n 3n 3 c n 1n 3cn 2n 3n 1 1 因此4 n 1 n 1 是3的倍數。乙個正整...
判斷乙個十進位制正整數是不是2的冪
description hry進入大學之後學習了二進位制,有一天他遇到這樣乙個問題,判斷乙個十進位制正整數是不是2的冪?input 第一行是乙個正整數t,表示有t組測試資料。每組測試資料有一行乙個正整數n。1 t 10000,1 n 1000000000000000000 output 每組測試資料...