令和5年度春期 応用情報技術者試験(AP)の午後問題3は、
- 多倍長整数の演算(カラツバ法)
に関する問題でした。
多倍長整数の加減算については、学生時代の課題で取り組んだ記憶があるのですが、乗算についてはこんな手法があるんですね。
問題を解くだけでも勉強になるのですが、自分で作って動かしてみると、より一層理解が深まるような気がします。

プログラム例(r05h_ap_pm3.py)
問題では配列の添字は1から始めていましたが、0から始めています。
実行結果
% python
Python 3.9.16 (main, Mar 8 2023, 04:29:44)
[Clang 14.0.6 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from r05h_ap_pm3 import Bignum
>>> val1 = Bignum("1234")
>>> val2 = Bignum("5678")
>>> val1.times(val2) # 問題文の数字で計算
'7006652'
>>> val3 = Bignum("123456789")
>>> val4 = Bignum("56789")
>>> val3.times(val4)
'7010987590521'
>>> 123456789*56789 # 検算
7010987590521 # 自作Bignumで計算した結果と同じ!
自作・多倍長整数の乗算で遊んでます。検算して一致しているとうれしいですね。| 令和5年度春期 #応用情報 午後問3 - Mae向きなブログ #Python https://t.co/oM72IMaRXf pic.twitter.com/O3mMU3lXKf
— ⓂⓐⓔⓗⓐⓡⓐⓂⓐⓢⓐⓗⓘⓓⓔ☁(20℃) (@maehrm) 2023年5月2日