假的ProjectEuler -翻轉數列 - 拼圖

Table of Contents


如果一個數被轉180度後變成另一數,稱為「翻轉數」。例如169 <-> 691, 但

146 就非翻轉數。特別允許翻過來時0在首位,然後將其移除取值。

於是全由1,6,8,9,0組成的數就是翻轉數,記作rev(x)

例如 rev(1680) := 0891 := 891


定義數列 <a(n)>, a(1)=1


{ rev (a(n)) , 若rev(a(n)) 在前面不曾出現
a(n+1) = {
{ a(n) + 1


根據定義, <a(n)> 的前幾項是:

1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 91, 92, 93, 94, 95,
96, 97, 98, 86, 87, 88, 89, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 8, 9, 10, 11, 12, 13, ...

已知 a(10000) = 5168,求 a(1,000,000)





: 我還沒算出來 (遭毆打)


: 又,題目是睡前數羊時想出來的 (再遭毆打)




--

All Comments

Emily avatarEmily2012-02-10
算 100,000,000 要 1.2 秒,1,000,000,000 要 12.5 秒
Caroline avatarCaroline2012-02-13
搞不好真的會出這題XDDD
Zora avatarZora2012-02-17
我的則是分別要 0.6 和 4.8 秒...果然 bitset 有加成 XD
Yedda avatarYedda2012-02-18
希望拙題有給各位一點牛刀小試的歡喜,C++實在好快
Bethany avatarBethany2012-02-18
要用程式算的話比較適合 Prob_Solve 板?
Mia avatarMia2012-02-22
全盛期的puzzle板琳瑯滿目什麼都有