Official

B - Modulo Number Editorial by nok0


この問題で求められていることは、 \(N\)\(998244353\) で割ったあまりを答えることです。

あまりを求める演算子として、多くの言語では % を用いることができます。Python では、以下のようなコードで AC を得ることができます。

実装例(Python):

n = int(input())
print(n % 998244353)

しかし c++ で同様の実装をすると WA となってしまいます。何故でしょうか?

この原因は、言語によって負の数に対するあまりの仕様が異なることです。言語によってはあまりが負になることがあるので、負の場合は \(0\) 以上になるように修正する必要があります。

実装例(c++):

#include <bits/stdc++.h>
using namespace std;

const int mod = 998244353;

int main() {
    long long n;
    cin >> n;
    n %= mod;
    if(n < 0) n += mod;
    cout << n << endl;
}

posted:
last update: