Ну пара микрооптимизаций:
if (b < 800) { b = 998; a--; }
- достаточно b = a; сделать, большие вы уже проверяли.
Также, произведение должно делиться на 11. Если a % 11 == 0, можно b уменьшать с шагом 11 (начиная с максимального числа, меньшего a и кратного 11).