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

Số cách xóa một phần tử từ chuỗi nhị phân để XOR thành 0 trong C++


Trong bài toán này, chúng ta được cho một chuỗi nhị phân. Nhiệm vụ là đếm tổng số cách xóa một phần tử sao cho XOR thành 0.

Hãy xem ví dụ để hiểu bài toán,

Đầu vào

n = 11010

Đầu ra

3

Để giải bài toán này, chúng ta cần logic: nếu số lượng 1 là chẵn thì XOR của chuỗi sẽ là 0, ngược lại, cần xóa một 1 khỏi chuỗi. Chúng ta có thể xóa bất kỳ số lượng 0 nào mà không ảnh hưởng XOR.

Chương trình triển khai giải pháp,

Ví dụ

#include<iostream> #include<string.h> using namespace std; int wayXorZero(string binaryString){    int oneCount = 0, zeroCount = 0;    int n = binaryString.length();    for (int i = 0; i < n; i++)       if (binaryString[i] == '1')          oneCount++;       else    zeroCount++;    if (oneCount % 2 == 0)       return zeroCount;    return oneCount; } int main(){    string binaryString = "10110100";    cout<<"Số cách làm XOR thành 0 là "<<wayXorZero(binaryString);    return 0; }

Đầu ra

Số cách làm XOR thành 0 là 4