package main import . "fmt" import . "math/bits" func main() { var x int Scan(&x) for m := 0; m < 64; m++ { n := x^m if OnesCount(uint(n)) == m && n > 0 { Println(n) return } } Println(-1) } /* 考察 Mは1のビットの数なので入力のXの範囲内で想定されるのは 0~63 の範囲しかない N xor M = X だから N = X xor M でもあり、Mを0~63の範囲全部からX xor MでN候補を求めNのビット数がMと一致するか確認すればいいだけ 問題文の読み込みが足りてない Nは正整数なので0になってはいけない */