程式語言 - LeetCode - C++ - 1318. Minimum Flips to Make a OR b Equal to c



參考資訊:
https://algo.monster/liteproblems/1318

題目:


解答:

class Solution {
public:
    int minFlips(int a, int b, int c) {
        int r = 0;
        int t = (a | b) ^ c;

        for (int i = 0; i < 32; ++i) {
            if (t & 1) {
                r += 1;
                if ((a & 1) && (b & 1)) {
                    r += 1;
                }
            }

            t >>= 1;
            a >>= 1;
            b >>= 1;
        }

        return r;
    }
};