この記事は 帰ってきた AOJ-ICPC Advent Calendar 2022 18日目 の記事です。
https://onlinejudge.u-aizu.ac.jp/challenges/search/titles/2539 (900点)
問題概要
を を 2 進数表記したときに下から bit 目 (1-indexed) が立っているなら 1 を, そうでないなら 0 を返す関数とする。
A と B を を満たす整数とし、 を かつ となる整数 の数とする。
が与えられるので、A と B を求めてください。
ただし、答えが複数あるなら Many を、1 つもないなら None を出力すること。
制約
マルチテストケース
テストケース数は 100000 個以下
入力では のみ与えられる。
のとき
のとき
解法
を見ることで、 の値は高々 3 通りに絞ることができる。
を固定したとき、 を利用すると、A, B が求められる。
あとは、それぞれ を実際に計算して確かめればよい。
あとがき
解説とか(公開)コードを読むと を計算してる人が見当たらなくて桁ごとになんかやってたので別解チャンスと思って書きました、がどうせ を確かめると思うとそんなに楽になってないかも