mod 998244353 の練習!
問題概要
非負整数 が与えられる。
を 998244353 で割った余りを求めよ。
制約
考えたこと
「足し算・引き算・かけ算」をした計算結果を 998244353 で割った余りを求める方法論については、次の記事に詳しく書いた。
これを元にして、実装する。なお、注意点として、 の値は最大で
まであり得るので、あらかじめ 998244353 で割った余りに置き換えておくこととする。そうしないと、
などを計算するときにオーバーフローが発生してしまう。
コード
#include <bits/stdc++.h> using namespace std; const int MOD = 998244353; int main() { long long A, B, C, D, E, F; cin >> A >> B >> C >> D >> E >> F; // あらかじめ MOD をとっておく A %= MOD, B %= MOD, C %= MOD, D %= MOD, E %= MOD, F %= MOD; // ABC, DEF を計算 long long ABC = (A * B % MOD) * C % MOD; long long DEF = (D * E % MOD) * F % MOD; // ABC - DEF を計算 long long res = (ABC - DEF) % MOD; if (res < 0) res += MOD; cout << res << endl; }