From 614eeea0fb020ac3906cb68b4ca315ff98f1874d Mon Sep 17 00:00:00 2001 From: AngleAirdrop <92680828+AngleAirdrop@users.noreply.github.com> Date: Fri, 31 Oct 2025 22:00:27 +0700 Subject: [PATCH] minimum_flips_or_equal.py --- minimum_flips_or_equal.py | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 minimum_flips_or_equal.py diff --git a/minimum_flips_or_equal.py b/minimum_flips_or_equal.py new file mode 100644 index 0000000..5b0788f --- /dev/null +++ b/minimum_flips_or_equal.py @@ -0,0 +1,41 @@ +# ============================================== +# Project: Minimum Flips to Make a OR b Equal to c +# Language: Python 3 +# Description: +# Given three integers a, b, c, return the minimum number of bit flips +# required in a and b so that (a OR b) == c. +# ============================================== + +class BitFlipper: + def minFlips(self, a: int, b: int, c: int) -> int: + flips = 0 + while a > 0 or b > 0 or c > 0: + bitA = a & 1 + bitB = b & 1 + bitC = c & 1 + + if (bitA | bitB) != bitC: + if bitC == 1: + flips += 1 + else: + flips += bitA + bitB # flip both if needed + + a >>= 1 + b >>= 1 + c >>= 1 + + return flips + + +if __name__ == "__main__": + flipper = BitFlipper() + + print("=============================================") + print(" MINIMUM FLIPS TO MAKE a OR b EQUAL TO c") + print("=============================================") + + a, b, c = 2, 6, 5 + print(f"Input: a = {a}, b = {b}, c = {c}") + print("Minimum Flips Needed:", flipper.minFlips(a, b, c)) + + print("\nProgram completed successfully!")