投稿者 NOSS | 2019-10-22
こんにちは、NOSSです。
今回はmod演算についての講習会を行いました。
また、3名の留学生の方に見学に来ていただきました。
講習会
秋学期に入って1回目の講習会ですが、かなり数学よりの内容になってしまいました。
- ユークリッド互除法、拡張ユークリッド互除法
- 繰り返し2乗法
- modの逆元
- フェルマーの小定理
基本的なmod演算はすでに経験がある人も多いかと思いますが、modの逆元が存在するのはかなり以外だったと思います。
参考サイト
- 拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜
- 「1000000007 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜
- モジュラ逆数 - Wikipedia
コンテスト
あまりを取る問題を中心に集めました。
簡単な解説
けんしょう先生のお菓子配り
ならば 、そうでないならば が答え。
□□□□□
の長方形 を作り、あまりが だとすると、 となる。
ここで を決めると と求められる。
よって の各 について を求め、 をとれば答えが求められる。
Training Camp
を求める。
for文でをかけていけばよい。
ただし、64bit整数を使うこととかけ算を行う毎にmodをとる必要があることに注意。
Modulo Summation
は のとき最大値 をとる。
Factors of Factorial
まず約数の個数の求め方を考える。 と素因数分解できるとき、その約数の個数は で求められる。
よって の素因数分解ができれば答えが求められる。 これは の各 を素因数分解した結果から求めることができる。
多重ループ
重複組み合わせ。