В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
rufa12
rufa12
15.04.2020 08:01 •  Информатика

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

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

#include <iostream>
#include <sstream>
#include <string>
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;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота