546.1

要リハビリ。腐ったものは元に戻らない気もするが...。

250

A以上B以下の整数で、特定のビットパターンを含むものの数を答えよ、という問題。


ビットパターンは先頭が1のものだけ。ビットパターンを左シフトして、0で埋めたものと1で埋めたものでビットパターンがその位置にあるものとして可能な値の範囲が分かるから、A以上B以下という制約との比較をする。これがBより大きくなったらおしまい。

500

Aという数字をX個、Bという数字をY個含むような数字のうち、N以上で最小のものを答えよ、という問題。


必要な桁数はX+YもしくはNの桁数+1になるので、その分だけ先頭に0が入っていると思って辞書順に全探索。自明な枝を刈るだけ。残り使わないといけないAとBの数だけの桁数が残っていないとか、AとBの残りの数が同じなら、できるだけ小さい数字でダメだったらそれよりも大きい数字は試さない(Nによる制約の場合は除く)とか。

1000

見てない。もったいない。