ABC266のB問題 Modulo Numberを解説します。
ポイント1: long long型
巨大な整数を扱うときはlong long型を利用しましょう。
int型では \( 10^9 \) くらいまでの整数を扱えます。
それより大きい整数を扱う場合はlong long型を利用します。
ポイント2: 剰余の計算
C++で剰余の計算を行うと、負の値となることがあります。
負の数に対して剰余の計算を行うと負の値となります。
それに対し、pythonでは正の値に収まります。
例をあげます。
#include<bits/stdc++.h>
using namespace std;
int main() {
cout << 73 % 10 << endl; // 出力は3であり、正の数
cout << (-73) % 10 << endl; // 出力は-3となり負の数
return 0;
}
print(73 % 10) # 出力は3
print(-73 % 10) # 出力は7, 正の数に収まる
入力例
998244354
C++での回答例
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n; // 巨大な整数を扱うときはlong long
cin >> n; // 入力の受け取り
long long y = 998244353;
n %= y;
if (n < 0) n += y; // 剰余の計算後に負の値の場合、正の数にする
cout << n << endl;
return 0;
}
pythonでの回答例
n = int(input()) # int型と入力を受けるときはint()を利用する
y = 998244353
n %= y # Pythonの剰余演算の結果は正の数となる
print(n)
コメント