Следующий счастливый билетик

Вводим текущий номер билетика - на выходе получаем номер следующего счастливого билетика и сколько билетов до него осталось

Попросили тут задачу по информатике решить - написать программу, которая для заданного номера билетика вычисляет сколько осталось до следующего "счастливого" билетика. Ну все в курсе наверно - номера билетов обычно шестизначные, и "счастливым" считается тот, у которого сумма первых трех цифр равняется сумме последних трех цифр. Что коду пропадать, вдруг кому понадобится - решил сразу сделать калькулятор.

Если бы просили просто напечатать все номера счастливых билетов - было бы очень просто - шесть вложенных циклов, ну а здесь пришлось немного заморочиться для вытаскивания цифры с указанной позиции в билете.
Формула примерно такая:
d=\frac{n \% 10^p - n \% 10^{p-1}}{10^{p-1}}
где
n - число,
p - позиция цифры в числе (1 - самая крайняя правая)
d - искомая цифра
% - операция получения остатка от целочисленного деления (взятие по модулю), например, 151 % 100 = 51.

Таким образом, для извлечения цифры 5 с третьей позиции из числа 100500 будет такой расчет:
d=\frac{100500 \% 1000 - 100500 \% 100}{100}

Ну а на javascript это будет как-то так:

function extractNumberFromPosition(n, p) {
    return (n%Math.pow(10,p) - i%Math.pow(10,p-1))/Math.pow(10,p-1);
}

PLANETCALC, Следующий счастливый билетик

Следующий счастливый билетик

Следующий счастливый билетик
 
Следующий счастливый билетик будет
 

Ссылка скопирована в буфер обмена
PLANETCALC, Следующий счастливый билетик

Комментарии