Четырехзначный палиндром

Условие данной задачи гласит: "Требуется написать программу, определяющую, является ли четырехзначное натуральное число N палиндромом, т.е. числом, которое одинаково читается слева направо и справа налево".

На входе дается четырехзначное число от 1000 до 9999. На выходе мы должы ответить, является число палиндромом ( "YES" ) или нет ( "NO" ).

Мы можем предложить 2 способа решения этой задачи, которые в конечном счете сводятся примерно к одной и той же схеме.

Алгоритм 1.

Так как на входе у нас 4-значное число, то нам нужно сравнить число из первых двух цифр число из вторых двух цифр, поставленных в обратном порядке. Условимся, что входные данные у нас типа int. Число из первых двух цифр мы получим легко, разделив данные на 100. Второе же число мы получим из суммы последней цифры, умноженной на 10, и предпоследней цифры, которая остатком от деления на 10 числа, полученного при делении на 10 исходных данных. Сложно? Ничуть. Смотрим на код:

#include <iostream>
 
main()
{
    int A;
    std::cin >> A;
    A / 100 == (A % 10) * 10 + (A/10 % 10) ? std::cout << "YES" : std::cout << "NO";
}

Вот и все...

Алгоритм 2.

В этом решении мы предположим, что вводят не число, а строку из 4 символов. В таком случае нам достаточно сравнить крайние и средние символы. Хотя это решение и звучит намного проще предыдущей, оно имеет свои недостатки: входные данные типа char, соответственно используется больший объем памяти ( для вводных данных резервируется в 2 раза больше памяти, чем если бы использовалась переменная типа int ). 

#include <iostream>
 
main()
{
    char B[4];
    std::cin >> B;
    B[3]==B[0] && B[2]==B[1] ? std::cout << "YES" : std::cout << "NO";
}