#bit全探索
###プログラムの書き方
for (int i = 0; i < (1 << 100); i++) {
bitset<100> s(i);
if (i & (1 << 2)){} // 2桁目のビットが1かどうかチェックする
}
###bitsetとは
ビット集合を表わす型(クラス)のこと. N桁の2進数を定義することができると思ってくれたら良い.
プログラム | 説明 |
---|---|
a = (a ^ b) など | int 型などと同じように、ビット演算(and, or, xor)をすることができます。 |
a.set(x) | a の x 桁目(2進数)を 1 に変更します。 |
a.reset(x) | a の x 桁目(2進数)を 0 に変更します。 |
a[i] | 配列と同様、a の i 桁目(2進数)にアクセスすることができます。a[i] は必ず 0 か 1 です。 |
a.count() | a の全ての桁のうち、1 となっている桁の個数を返します。 |
###練習問題
ARC061 C - たくさんの数式 / Many Formulas
ABC079 C - Train Ticket
ABC104 C - All Green
ARC029 A - 高橋君とお肉
ABC002 D - 派閥