切割相加 (APCS 2026-11 高級)

2.0s 256M

有一個只由數字 \(1\)~\(9\) 組成的字串 \(S\)。字串裡每兩個相鄰的數字之間都有一個空隙,長度為 \(|S|\) 的字串共有 \(|S|-1\) 個空隙。你可以在其中一些空隙插入加號(每個空隙可以插、也可以不插),把 \(S\) 變成一個加法算式,再算出它的結果。一個加號都不插也算是一種插法,這時算式就是 \(S\) 本身。

另外給你一個整數 \(m\)。請在所有結果不超過 \(m\) 的插法中,找出最大的結果,並算出有幾種插法的結果剛好等於這個最大值。兩種插法只要有某一個空隙在一種插法裡插了加號、在另一種插法裡沒插,就算是不同的插法。

以範例 2 為例,\(S\) 是 91253217、\(m = 100\)。插成 9+12+53+2+17 時,結果是 \(93\);一個加號都不插時,結果是 \(91253217\),超過了 \(m\)。沒有任何插法的結果介於 \(94\) 到 \(100\) 之間,所以在所有結果不超過 \(100\) 的插法中,最大的結果是 \(93\),而且剛好有兩種插法得到 \(93\):

9+12+53+2+17 = 93
9+1+2+53+21+7 = 93

因此第一行輸出 \(93\),第二行輸出 \(2\)。

輸入格式

第一行是字串 \(S\)。

第二行是一個整數 \(m\)。

限制

  • \(1 \le |S| \le 40\),其中 \(|S|\) 是字串 \(S\) 的長度
  • \(S\) 只由數字 \(1\)~\(9\) 組成
  • \(1 \le m \le 3 \times 10^4\)
  • \(m\) 不小於 \(S\) 中所有數字的總和
  • 答案中的插法數不超過 \(2^{31}-1\)

輸出格式

輸出兩行。第一行是所有結果不超過 \(m\) 的插法中最大的結果,第二行是結果等於這個最大值的插法數。

評分說明

每一筆測試資料的執行時間限制均為 \(2\) 秒,依正確通過的測試資料筆數給分。

子題 分數 額外限制
1 40 \(\lvert S \rvert \le 18\)
2 60 無額外限制

範例輸入 1

36319
50

範例輸出 1

49
2

範例解釋 1

沒有任何插法的結果剛好是 \(50\)。結果不超過 \(50\) 的插法中,最大的結果是 \(49\),有以下兩種插法:

36+3+1+9 = 49
3+6+31+9 = 49

範例輸入 2

91253217
100

範例輸出 2

93
2

範例解釋 2

這組範例在題目敘述中已經說明過:結果不超過 \(100\) 的插法中,最大的結果是 \(93\),共有兩種插法。

題目來源

APCS 2026 年 11 月高級實作題第 3 題。

官方未公布題本,題敘依考生考後回憶整理,細節可能與正式試題有出入。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。