1. なぜ 998244353 で割るのか? 最初はこのような設問を見るとぎょっとしてしまいますが、実はとても自然な問題設定です。 $998244353$ で割らないと、答えの桁数がとてつもなく大きくなってしまうことがあります。このとき以下のような問題が生じます: 多倍長整数がサポートされている言語とされていない言語とで有利不利が生じる 10000 桁にも及ぶような巨大な整数を扱うとなると計算時間が膨大にかかってしまう 1 番目の事情はプログラミングコンテストに特有のものと思えなくもないですが、2 番目の事情は切実です。整数の足し算や掛け算などを実施するとき、桁数があまりにも大きくなると桁数に応じた計算時間がかかってしまいます。実用的にもそのような巨大な整数を扱うときは、いくつかの素数で割ったあまりを計算しておいて、最後に中国剰余定理を適用して復元することも多いです。 なぜ 9982443
![「998244353 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/6451641093e6c3c360fe388e9eeaf71a26e6619d/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JTIwJUUzJTgwJThDOTk4MjQ0MzUzJTIwJUUzJTgxJUE3JUU1JTg5JUIyJUUzJTgxJUEzJUUzJTgxJTlGJUUzJTgxJTgyJUUzJTgxJUJFJUUzJTgyJThBJUUzJTgwJThEJUUzJTgxJUFFJUU2JUIxJTgyJUUzJTgyJTgxJUU2JTk2JUI5JUUzJTgyJTkyJUU3JUI3JThGJUU3JTg5JUI5JUU5JTlCJTg2JUVGJUJDJTgxJTIwJUUzJTgwJTlDJTIwJUU5JTgwJTg2JUU1JTg1JTgzJUUzJTgxJThCJUUzJTgyJTg5JUU5JTlCJUEyJUU2JTk1JUEzJUU1JUFGJUJFJUU2JTk1JUIwJUUzJTgxJUJFJUUzJTgxJUE3JTIwJUUzJTgwJTlDJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1mMzdjZmQ3MTk1YWNkMmVjYjFmZDRlYzVhNGEzNWU0Yw%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBkcmtlbiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MTAwNWQwMmY2YmFhZjU1YjkxMDk3NDhmMjI2MzJiMmQ%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4g5qCq5byP5Lya56S-TlRU44OH44O844K_5pWw55CG44K344K544OG44Og%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3Dcf10e72350e4cd7a0a1a7ca806bc1a8d)