Палиндромом назовем число, состоящее не менее чем из 2-х символов или цифр, одинаково читающееся как слева направо, так и наоборот. Например, число «1221» является палиндромом, а число «1224» – нет. Назовем палиндромом-1016 число, являющееся палиндромом в десятичном и шестнадцатеричном представлении. Количество палиндромов-1016 среди первых десяти миллионов натуральных чисел составит…

Ответ: 22
Вариант на C++, но программа долго выполняется; как оптимизировать, я пока не знаю.

#include
#include
#include
int main()
{
    int k = 0;    //счетчик 1016палиндромов
   
    for (int i = 16; i <= 10000000; i++)
    {
        int temp = i;

        std::stringstream ss;   //перевод 10чного числа в 16чную строку
        ss << std::hex << temp;
        std::string temp16(ss.str());

        //проверяем, является ли 16чное число палиндромом
        bool t16 = true;
        int left_index = 0;
        int right_index = temp16.size() - 1;
        while (left_index < right_index)
            if (temp16[left_index++] != temp16[right_index--])
                t16 = false;

        if (t16)
        {
            bool t10 = true;
            std::ostringstream ost;   //перевод 10чного числа в строку
            ost << temp;
            std::string temp10 = ost.str();

            //проверяем, является ли 10чное число палиндромом
            int left_index = 0;
            int right_index = temp10.size() - 1;
            while (left_index < right_index)
                if (temp10[left_index++] != temp10[right_index--])
                    t10 = false;

            if (t10)
                k = k + 1;
        }
    }
   
    std::cout << "Number of 1016-palindroms: " << k << std::endl;
    return 0;
}

Оцени ответ
Не нашёл ответ?

Если тебя не устраивает ответ или его нет, то попробуй воспользоваться поиском на сайте и найти похожие ответы по предмету Информатика.

Найти другие ответы

Загрузить картинку
Гадать еще раз