はまやんはまやんはまやん

hamayanhamayan's blog

競技プログラミングにおける多倍長整数問題まとめ

多倍長整数

64ビットを越える整数を扱いたい場合はどうするか

1. 他の解法を考える

  • 答えが多倍長整数でもない限り、多倍長整数を使わない解法があったりするのでそれを考える
  • 答えが64ビット越えるアレな問題もある(ECR34)

2. 多倍長整数に対応した言語を使う(オススメ!)

  • Pythonは対応している
  • JavaにはBigIntegerクラスがある

3. 128ビットなら収まりそうという場合は__int128を使う 紹介

4. Boostのcpp_intを使う 参考

5. 自分でライブラリを作る

  • Karatsuba法という掛け算を少し高速化する手法がある wikipedia