#include #include class Solution { public: int minFlips(int a, int b, int c) { auto flips = 0; for (; (a | b) != c; a >>= 1, b >>= 1, c >>= 1) { auto [aa, bb, cc] = std::tuple{a & 1, b & 1, c & 1}; if ((aa | bb) == cc) { continue; } if (aa && bb) { flips += 2; } else { flips++; } } return flips; } }; int main() { Solution s; assert(s.minFlips(2, 6, 5) == 3); assert(s.minFlips(4, 2, 7) == 1); assert(s.minFlips(1, 2, 3) == 0); assert(s.minFlips(8, 3, 5) == 3); // 1000 | 0011 = 0101 return 0; }