diff --git a/cs/minimum-flips-to-make-a-or-b-equal-to-c.cs b/cs/minimum-flips-to-make-a-or-b-equal-to-c.cs new file mode 100644 index 0000000..532563b --- /dev/null +++ b/cs/minimum-flips-to-make-a-or-b-equal-to-c.cs @@ -0,0 +1,21 @@ +public class Solution { + public int MinFlips(int a, int b, int c) { + var flips = 0; + + for (; (a | b) != c; a >>= 1, b >>= 1, c >>= 1) { + var (aa, bb, cc) = (a & 1, b & 1, c & 1); + + if ((aa | bb) == cc) { + continue; + } + + if (aa != 0 && bb != 0) { + flips += 2; + } else { + ++flips; + } + } + + return flips; + } +}