2010年8月16日 星期一

165 - Stamps

Nova Mareterrania政府要求各式法院文件皆須貼上郵票,這樣政府才能從中抽一筆稅,現行的法規規定每一種文件上面的郵票數目都有其上限,此時政府需要知道應該發行幾種不同面額的郵票才能在郵票數目受限的情況下儘可能的產生最多組總面額值。郵票面額以1塊錢為單位。

經過研究,政府的數學家們得出一個公式:n(h,k)。h為文件上可以貼的最大郵票張數,k表示郵票共有幾種面額可供選擇,n為在h, k既定的情況下所產生的總價值由1開始連號到最大值n。例如當h=3, k=2且面額選定為$1 與 $4時,可以產生總價值 $1 ~ $6的組合(另有 $8, $9 與 $12 的組合),然而,如果h, k值不變的情況下,面額選為$1與$3時,則可以組合出 $1 ~ $7 的組合($9也是一種組合),$7是可產生連號的最大值,所以 n(3,2) = 7。

不幸的是,n(h,k)公式及其面額對照表不見了,雖然它被發表在政府某一份刊物上,但誰也記不起來到底是那一份刊物。而當初找出公式的三名研究員有兩名因為太過無聊而死了,第三位已經離職跑去當夜間燈塔看守人,因為這份工作比較有機會與人群接觸。

現在這份屎缺只好交給身為替代役男的你,看慣公務體系經常偽造假資料的你會懷疑公式其實從一開始就不存在,所以你決定寫一個程式找出當h, k給定的情況下最佳的面額組合 n(h,k)。

Input

輸入會有許多列,每一列有兩個整數h, k,檔案最後會以(0 0)結束。基於技術上的理由,h與k值的總合最多到9(因為總統打獵時不小心擦槍走火誤傷了自已的小指,大於9的數字他就不會算了)。

Output

對應每組(h, k)的資料輸出一列,該列前k個整數表示所選擇的k種郵票面額,每個整數佔3個字元寬,接下來請輸出一個空白,一個箭頭(->)與最大的n(h,k)值,n(h,k)值也佔3個字元寬。

Sample input

3 2
0 0

Sample output

  1  3 ->  7

原文出處

沒有留言:

張貼留言