切換
舊版
前往
大廳
主題

ZeroJudge - e931: pA. 直式乘法 解題心得

Not In My Back Yard | 2020-04-01 00:21:38 | 巴幣 0 | 人氣 201

題目連結:


題目大意:
給定兩正整數 a 、 b (1 ≦ a 、 b ≦ 9999),求 a × b 的直式乘法過程。輸出格式參見範例輸出。


範例輸入:
範例輸入一:
23
204

範例輸入二:
23
12


範例輸出:
範例輸出一:
  23
204
----
  92
  0
46
----
4692

範例輸出二:
23
12
---
46
23
---
276


解題思維:
因為需要預留空白的縮排(儘管實際上 ZeroJudge 的系統在設定為「Tolerant」時會忽略字串前後的空白與換行,所以留不留其實在這題沒差),所以先求得 a × b 的長度同時將 b 的位數分開。例如數字 123 就分成 1 、 2 、 3 。

做乘法的時候就以 b 的位數當作基準——每掃到 b 的一個數字就乘以 a 本身得到 b' 並根據現在距離 b 的尾端多遠、 b' 的長度以及 a × b 結果的位數長即是要輸出的空白數。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作