Задача на С++ с codeforces.
Дата публикации:

Задача на С++ с codeforces.

d289af71

Задача на С++ с codeforces.

Вот решение задачи на C++:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool checkPalindrome(string s) {
    int n = s.length();
    for (int i = 0; i < n / 2; i++) {
        if (s[i] != s[n - i - 1]) {
            return false;
        }
    }
    return true;
}

bool checkBinaryPalindrome(string s) {
    int n = s.length();
    int countOnes = count(s.begin(), s.end(), '1');
    if (countOnes % 2 == 0) {
        return true;
    }
    return checkPalindrome(s);
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        vector<string> strings(n);
        for (int i = 0; i < n; i++) {
            cin >> strings[i];
        }
        for (int i = 0; i < n; i++) {
            if (checkBinaryPalindrome(strings[i])) {
                cout << "YES ";
            } else {
                cout << "NO ";
            }
        }
        cout << endl;
    }
    return 0;
}

В этом решении мы сначала определяем две функции: checkPalindrome, которая проверяет, является ли строка палиндромом, и checkBinaryPalindrome, которая проверяет, является ли строка палиндромом в двоичной системе счисления.

Затем мы считываем количество тестов t и в цикле считываем каждый тест. Для каждого теста мы считываем количество строк n и сами строки. Затем мы проверяем каждую строку с помощью функции checkBinaryPalindrome и выводим "YES", если строка является палиндромом в двоичной системе счисления, и "NO" в противном случае.

Надеюсь, это поможет!