Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Đếm số bit cần đảo để XOR của A và B bằng C trong C++

Cho 3 chuỗi nhị phân A, B, C độ dài N. Tìm số bit cần đảo trong A và B sao cho A XOR B = C.

Bảng chân lý XOR

XYX XOR Y
000
011
101
110

Quy tắc lật bit

  • A[i]==B[i] và C[i]==0 → không lật
  • A[i]==B[i] và C[i]==1 → lật 1 trong 2, đếm +1
  • A[i]!=B[i] và C[i]==0 → lật 1 trong 2, đếm +1
  • A[i]!=B[i] và C[i]==1 → không lật

Ví dụ

Đầu vào - A={0,0,0,0}, B={1,0,1,0}, C={1,1,1,1}

Đầu ra - Số lần lật: 2

Chương trình mẫu (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 << "Số bit cần lật: " << flipCount(a, b, c, N);
    return 0;
}

Kết quả

Số bit cần lật: 2