yukicoderのNo.822 Bitwise ANDをACした
問題はこちらから
問題概要
& かつ を満たす整数の組 の個数を求めよ (無限個の場合はINFと出力)
制約
かつ
考察
まず, 無限個になる場合を判定したい. 大きくなるほど, 差は多くなると考えられる.
の最上位ビットとして の最上位ビットよりも大きな ビットが立っているときの差の最小値は をできるだけ増やして, をできるだけ小さくしたい. したがって, 1 ~ ( ) ビット目を の ビットが立っているなら, , ともに1, 立っていないなら は1, は 0 とすればよい. この差の最小値は | だから, と の大きさを比べれば良い.
のとき
を上記の作り方をすれば無限個存在する.
< のとき
上記議論から, ビットが立っているような の数は高々有限個. したがって, 有限個の組しか存在しない また, andの性質から はともに よりも大きく, かつ の最上位ビット以上のとこにビットがあってはならない. これを全探索すれば良い!