## 【36】Double-base palindromes雙進制迴文數
十進位數字585=10010010012在十進位和二進位下都是回文數。
請找出所有小於100,0000的數,在二進位下也是回文數的十進位數字的和。
(請注意,回文數(以任何一個為底)都不能包含前導零。)
### 數字翻轉法:
因為是整數,所以可以求出該整數的翻轉後的數值,看是否與原來整數相等。如果相等,則是回文數,否則不是。例如12321翻轉後為12321,所以是回文數;而1231翻轉後為1321,與1231不相等,所以不是回文數。
觀察下面這一段程式碼,想想看,輸出為何是54321?

### 【練習1】模仿上面程式碼,輸入任意一串數,將其前後顛倒,產生它的回文數
注意:使用n =input("輸入一個數字:"),得到的n是文字串,不是數值喔!
必須n = int(input("輸入一個數字:"))才會是數值
### 【練習2】利用上面練習,把判斷過程定義成函式,然後輸入數字,判斷是否為回文數?

在練習2中,輸入12321可以判斷是否回文,那輸入11011也可以檢驗任一個二進位數是否回文。
#### 如果不用數字處理,改用字串處理,會不會更簡單?
#### 使用字串處理還有一個方便之處,就是反序輸出很簡單,參考用法:

### 【練習3】找出小於100,0000的回文數,有1998個喔!
略。這個比較容易,你自己來吧!
### 【練習4】做一個函式,可以將任一個十進位數換算成二進位數輸出,參考:

#### 將十進位化成二進位的方法,就是不斷除以2,留下餘數不是1就是0,但是上面函式顯示餘數是現除出來的先放,所以得到10011,而正確二進位應該是11001。
#### 現在你有2道問題要克服,(1)將順序反過來,(2)直接輸出成數字,而不是list。
python提供一個轉換2進位的指令bin,但是它的輸出是字串,參考用法:

如果用這種方法,是不是比前面提供的練習範例更好?
## 請找出所有小於100,0000的數,在二進位下也是回文數的十進位數字的和(不包含前導零)。
PS1:0算不算回文數,算也沒關係,總和不便。
PS2:如果用數字處理二進位回文判斷,會遇到一個很大的陷阱:
雖然Python沒有限制長整數數值的大小,但實際上由於機器記憶體有限。我們使用的長整數數值不可能無限大。makePd中,1百萬以下沒問題,1億也沒問題,但是超過1千兆,這麼大的數做除法運算,換成二進位,就會出問題。

所以建議你用字串處理!
PS3:偷偷告訴你,只要考慮奇數,因為偶數化成二進位,尾端一定是0,不用考慮。
for n in range(1,1000000,2):<--這樣程式跑起來少一半時間,如果配字串涵式bin寫法,只要0.25秒跑出答案。