@o_ouch

Как можно оптимизировать код?

Есть код цель которого поиск произведения 2х трехзначных чисел в результате которых получается наибольшее палиндромное число, есть ли возможность оптимизировать данный код?
#include <iostream>
using namespace std;
int main()
{


    int maxpol = 999 * 999;
    int a =999;
    int b = 998; 
    int count=0;
   
    
    for (int i = 0; i < maxpol; i++)
    {
        count = a * b;
        if ((count % 10) != ((count % 1000000) / 100000) || ((count % 100)/10) != ((count % 100000) / 10000) || ((count % 1000)/100) != ((count % 10000) / 1000))
        {
            b--;
            if (b < 800) { b = 998; a--; }
        }
        else break;
    }
    std:: cout << count << endl << a <<   endl << b;
}
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Ну пара микрооптимизаций:
if (b < 800) { b = 998; a--; } - достаточно b = a; сделать, большие вы уже проверяли.

Также, произведение должно делиться на 11. Если a % 11 == 0, можно b уменьшать с шагом 11 (начиная с максимального числа, меньшего a и кратного 11).
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Может быть, если конвертировать число в строку и проверять строку на палиндром, будет быстрее. Не уверен, надо проверять. Только не используйте std::string, а используйте стандартный сишный массив символов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы