q01——回文十進位制數
問題:求用十進位制、二進位制、八進位制表示都是回文數的所有數字中,大於十進位制數的10的最小值。
思路:因為是二進位制的回文數,所以如果最低位是0,那麼相應地最高位也是0。但是,以0開頭肯定是不恰當的,由此可知最低位為1。如果用二進位制表示時最低位為1,那這個數一定是奇數,因此只考慮奇數的情況就可以,接下來就可以簡單地編寫程式,從10的下乙個數字11開始,按順序搜尋。
**如下:
ruby版本
# 從11開始檢索
num =
11while
true
if num.to_s == num.to_s.reverse &&
num.
to_s(8
)== num.
to_s(8
).reverse &&
num.
to_s(2
)== num.
to_s(2
).reverse
puts num
break
end# 只檢索奇數,每次加2
num +=2
end
js版本
/* 為字串型別新增返回逆序字串的方法 */
string.prototype.
reverse
=function()
/* 從11開始檢索 */
var num =11;
while
(true
)/* 只檢索奇數,每次加2 */
num +=2;
}
程式設計師的演算法趣題 Q3翻牌
這裡有 100 張寫著數字 1 100 的牌,並按順序排列著。最開始所有牌都是背面朝上放置。某人從第 2 張牌開始,隔 1 張牌翻牌。然後第 2,4,6,100 張牌就會變成正面朝上。接下來,另乙個人從第 3 張牌開始,隔 2 張牌翻牌 原本背面朝上的,翻轉成正面朝上 原本正面朝上的,翻轉成背面上 ...
程式設計師的演算法趣題Perl版 (二)
竟然一月一更。第四題 假設一根木棒n厘公尺,需要切分為一厘公尺長的木棒,每根木棒只可以乙個人切,木棒切成兩根可以兩個人切 求 n厘公尺長木棒,m個人最少要切幾次,比如n 8,m 3,則需要切4次。perl 20170930 use strict sub cut elsif currentparts ...
100 的程式設計師都想挑戰的演算法趣題!
計算機的世界每天都在發生著深刻的變化。新作業系統的發布 cpu效能的提公升 智慧型手機和平板電腦的流行 儲存介質的變化 雲的普及 這樣的變化數不勝數。在這樣日新月異的時代中,演算法 是不變的重要基石。要編寫高效率的程式,就需要優化演算法。無論開發工具如何進化,熟識並能靈活運用演算法仍然是對程式設計師...