競技プログラミング用 知識集積所
long long型
最終更新:
sport_programming
-
view
雑な説明
int型より大きな数を扱える整数型変数。
レベル
ABCのB問題レベル。
詳細な説明
64ビットの整数型。
符号用の1ビット、値の大きさ用の63ビット。
そのため、扱える値の範囲は-9,223,372,036,854,775,808から9,223,372,036,854,775,807まで。
およそ±9×10^18くらいまでは大丈夫、それを超えると危ない、と認識するとよい。
符号用の1ビット、値の大きさ用の63ビット。
そのため、扱える値の範囲は-9,223,372,036,854,775,808から9,223,372,036,854,775,807まで。
およそ±9×10^18くらいまでは大丈夫、それを超えると危ない、と認識するとよい。
1LLのように、普通の数の後ろにLLをつけるとlong long型になる。
宣言と初期化
宣言だけする場合
long long a;
初期化もする場合
long long a = 0LL; //固定値で初期化、0とだけ書いてもキャストされるので問題ない long long b = a; //他の変数(整数型、double型)で初期化
可能な演算
よく使う処理
int型の積が一時的にint型範囲を超える場合の処理。
例えば、10^6くらいの数2つをかけて10^7くらいの数で割った余りを知りたい、という場合。
(a*b)%c
と書くと、掛け算の時点でint型範囲を超えてしまうため、最後の結果も狂ってしまう。
(1LL*a*b)%c
というように1LLを掛け算することで一時的にlong long型で処理するとオーバーフローを防げる。
注意点
int型とほぼ同じなので、そちらを参照。
補足事項として、long long型でも桁あふれしそうな場合、さらに大きな桁数を扱う型を持ち出すよりは、別手段を考えた方がよい。
補足事項として、long long型でも桁あふれしそうな場合、さらに大きな桁数を扱う型を持ち出すよりは、別手段を考えた方がよい。
関連アルゴリズム
int型とほぼ同じなので、そちらを参照。