takahiro_itazuriの公倍数的ブログ

本やWebを通して学習したことをまとめるブログです。最大公約数(つまり、共通部分)的なという表現と対比して、「なるべく包括的にカバーしつつ、更に+αの要素も加えられたらいいな」という意味で公倍数的ブログと名付けました。

【就プロ】C++の型と範囲

はじめに

競技プログラミングでは、「特定のテストケースに対して正しく出力が出てくるか」というブラックボックステストが行われ、全てのテストケースに正しく出力することで得点が加算されます。テストケースの入力の値の範囲は決められている場合が多く、型を正しく選択する必要があります。

整数型

型名 バイト幅 ビット幅 範囲
short 2 16 -32768 ~ 32767
unsigned short 2 16 0 ~ 65535
int 4 32 -2147483648 ~ 2147483647
unsigned int 4 32 0 ~ 4294967295
long long 8 64 -9223372036854775808 ~ 9223372036854775807
unsigned long long 8 64 0 ~ 18446744073709551615

longは32bit環境と64bit環境で範囲が異なるため、ここでは書いていません。
この値をこのまま覚えられる人はそれで構いませんが、基本的には、$ 10^8 $までの値であればintで扱うことができ、それ以上はlong longを使用しましょう。じこれを考えるのは面倒な方はメモリ効率は良くないですが、常にlong longを使用する方法もあります。

実数型

型名 バイト幅 ビット幅 範囲
float 4 32 1.17549e-38 ~ 3.40282e+38
double 8 64 2.22507e-308 ~ 1.79769e+308
long double 16 128 3.3621e-4932~1.18973e+4932

実数型も整数型と同様にオーダーさえ把握していればいいと思います。
プログラミングコンテストでは実数が答えとなるような問題はあまり出題されません。

文字型

型名 バイト幅 ビット幅 範囲
char 1 b -128~127
signed int 1 8 -128~127
unsigned int 1 8 0~255

こちらはあまり覚える必要はないですね。というよりは覚えること自体が苦じゃありません。