কম্পিউটার টিউটোরিয়াল

C++-তে A XOR B = C হলে A ও B-তে ন্যূনতম বিট ফ্লিপ নির্ণয়

তিনটি বাইনারি সিকোয়েন্স A, B, C দেওয়া আছে (দৈর্ঘ্য N)। A এবং B-তে ন্যূনতম কতগুলো বিট ফ্লিপ করলে A XOR B = C হবে তা বের করতে হবে।

XOR ট্রুথ টেবিল

XYX XOR Y
000
011
101
110

নियम

  • A[i]==B[i] এবং C[i]==0 → ফ্লিপ দরকার নেই।
  • A[i]==B[i] এবং C[i]==1 → A[i] বা B[i] ফ্লিপ (কাউন্ট++)।
  • A[i]!=B[i] এবং C[i]==0 → ফ্লিপ (কাউন্ট++)।
  • A[i]!=B[i] এবং C[i]==1 → ফ্লিপ দরকার নেই।

উদাহরণ

ইনপুট: A={0,0,0,0}, B={1,0,1,0}, C={1,1,1,1}

আউটপুট: ২

ইনপুট: A={0,0,1,1}, B={0,0,1,1}, C={0,0,1,1}

আউটপুট: ২

C++ প্রোগ্রাম উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int flipCount(int A[], int B[], int C[], int N) {
    int count = 0;
    for (int i = 0; i < N; i++) {
        if (A[i] == B[i] && C[i] == 1) count++;
        else if (A[i] != B[i] && C[i] == 0) count++;
    }
    return count;
}

int main() {
    int N = 5;
    int a[] = {1,0,0,0,0};
    int b[] = {0,0,0,1,0};
    int c[] = {1,0,1,1,1};
    cout << "ন্যূনতম বিট ফ্লিপ: " << flipCount(a, b, c, N);
    return 0;
}

আউটপুট

ন্যূনতম বিট ফ্লিপ: 2
  1. সর্বনিম্ন সংখ্যা K খুঁজে বের করা যাতে K % p = 0 এবং q % K = 0 C++-তে

  2. সর্বনিম্ন x খুঁজে বের করা যাতে (x % k) * (x / k) == n C++-তে

  3. দেওয়া সংখ্যা n-এর জন্য x + x-এর অঙ্কের যোগফল = n এমন x খুঁজে বের করা C++-এ

  4. C++-এ দুটি বাইনারি অ্যারেয়ের XOR অন্য একটি অ্যারের সমান করার জন্য ন্যূনতম ফ্লিপ