Closed uwi closed 4 years ago
m
がint
型なら戻り値もint
型にできると思うのですが,どちらが良いのでしょうか...?
個人的には戻り値がint
でないと困るケースはほとんどないしどちらでもよいと思いますが,Javaだと配列の添え字にはint
しか突っ込めない等の事情もあるので一応意見がききたいです.
制約的にはint
で良いですね。
自分のライブラリだと、この周囲に乗算があった場合、long
でいたほうがキャストしなくて良いかな的なところがあります。
確かに,pow_mod(x1, y1, m) * pow_mod(x2, y2, m) % m
みたいなことをする機会の方が圧倒的に多いので,long
の方が良いという気持ちになりました.ありがとうございます.
33
原典とコードをほぼ同じに
m
の制約をint
に&&
でつなぐassertionは複数行のほうが引っかかったときの原因がすぐにわかるのでそうするm=1
を場合分け(x=1%m
としてもよい)x
の初期値をsafe_mod
で求める%2
,/2
を&1
,>>>=1
として2%高速化(ローカル測定)pow_mod
の引数の範囲を網羅できているわけではない。