令和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日