Палиндромом назовем число, состоящее не менее чем из 2-х символов или цифр, одинако

Палиндромом назовем число, состоящее не менее чем из 2-х символов или цифр, одинаково читающееся как слева направо, так и наоборот. Например, число «1221» является палиндромом, а число «1224» – нет. Назовем палиндромом-1016 число, являющееся палиндромом в десятичном и шестнадцатеричном представлении. Количество палиндромов-1016 среди первых десяти миллионов натуральных чисел составит…
Гость
Ответ(ы) на вопрос:
Гость
Ответ: 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; }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы