Re: [發案] 徵求程式設計高手 (有關排列組合)

看板CodeJob作者 (影斯)時間16年前 (2009/10/19 21:00), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串3/4 (看更多)
我不會 matlib. 我高中的科學競賽內容(佳作) 正六角形的拼圖六色不重複. 正反面不重複共 60 塊. 中間留空, 從中間開始拼, 最多能拼幾塊? 6 色可以依序轉成 0 ~ 119 的數字(序號), 就很方便計算. 很明顯其中一種顏色固定位置為基準. 用順時針順序. 123456 = 0 (反面 119) 123465 = 1 123645 = 2 123654 = 3 ... 165432 = 119 一看就知道序號大的數字也大,有對應關係. 我的程式可以從序號和數字之間互轉,方便計算. 計算的 magic number: 1 2 6 24 以 165432 為例 a. 2 3 4 5 6 (剩下的顏色,依序排列) 0 1 2 3 4 (順序值, 從零開始) 取 6, 4 * 24 = 96 b. 2 3 4 5 0 1 2 3 取 5, 3 * 6 = 18 c. 2 3 4 0 1 2 取 4, 2 * 2 = 4 d. 2 3 0 1 取 3, 1 * 1 = 1 96 + 18 + 4 + 1 = 119 此題類似: 原始問題和資料展開後如下: 共有 35 組 接案者可以找出從 "序號" 轉成 "數字" 的公式. 這個問題不難,只需找出規律,建好表格. 題目似乎只要依序 printf, 這是更容易完成的. 如果有 "序號 => 數字" 的公式, 就可以在中途停止, 只記錄一個序號的數值, 十分方便. 1 2 3 4 5 (資料的數字) 5 4 3 2 1 (依順序能包含多少數量) 倒序比較容易看出累積數量. (15 組) 111 = 0 34 112 = 1 33 113 = 2 32 114 = 3 31 115 = 4 30 122 = 5 29 123 = 6 28 124 = 7 27 125 = 8 26 133 = 9 25 134 = 10 24 135 = 11 23 144 = 12 22 145 = 13 21 155 = 14 20 (10 組) 222 = 15 19 223 = 16 18 224 = 17 17 225 = 18 16 233 = 19 15 234 = 20 14 235 = 21 13 244 = 22 12 245 = 23 11 255 = 24 10 (6 組) 333 = 25 9 334 = 26 8 335 = 27 7 344 = 28 6 345 = 29 5 355 = 30 4 (3 組) k 組 444 = 31 3 445 = 32 2 455 = 33 1 (1 組) 555 = 34 0 雖然因為 n 、 k 的數值大而要使用 bignum library, 不過實際的難度不高. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.22.98

10/19 21:44, , 1F
太好了 快去接案吧
10/19 21:44, 1F

10/20 00:57, , 2F
果真如此,現今的密碼全部都要再強化過了
10/20 00:57, 2F

10/20 01:00, , 3F
而且原要求是可重複,不管順序
10/20 01:00, 3F

10/20 15:01, , 4F
這篇還滿逗趣的 XD
10/20 15:01, 4F
文章代碼(AID): #1At6BH_o (CodeJob)
文章代碼(AID): #1At6BH_o (CodeJob)