blob: b51b2612cb1ec456c0ed8290aa2c7dcb506b0dac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// 1318. Minimum Flips to Make a OR b Equal to c
#include "leetcode.h"
/*
* given three positive numbers 'a, b, c'. return the minimum flips required in
* some bits of 'a | b == c'. flip operation consists of changing any single bit
* 1 to 0 or changing the bit 0 to 1 in their binary representation
*/
class Solution {
public:
int minFlips(int a, int b, int c) {
return __builtin_popcount(c ^= a | b) + __builtin_popcount(a & b & c);
}
};
int main() {
Solution obj;
printf("%d\n", obj.minFlips(2, 6, 5)); // expect: 3
printf("%d\n", obj.minFlips(4, 2, 7)); // expect: 1
printf("%d\n", obj.minFlips(1, 2, 3)); // expect: 0
}
|