aboutsummaryrefslogtreecommitdiff
path: root/other/min_flips_abc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/min_flips_abc.cpp')
-rw-r--r--other/min_flips_abc.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/other/min_flips_abc.cpp b/other/min_flips_abc.cpp
new file mode 100644
index 0000000..b51b261
--- /dev/null
+++ b/other/min_flips_abc.cpp
@@ -0,0 +1,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
+}