Задача. Проверить, является ли четырехзначное число счастливым билетом. Дано четырехзначное число. Проверить, является ли оно «счастливым билетом».
Счастливым билетом называется число, в котором:
а) при четном количестве цифр в числе сумма цифр его левой половины равна сумме цифр его правой половины;
б) при нечетном количестве цифр – то же самое, но с отбрасыванием серединной цифры.
Например
Рассмотрим число 1322. Его левая половина равна 13, а правая – 22, и оно является счастливым билетом (т. к. 1 + 3 = 2 + 2).
Аналогично: 1735 (1 + 7 = 3 + 5), 1111 (1 + 1 = 1 + 1) и т. д.
Решение
Все, что необходимо сделать для решения задачи – это последовательно получить все разряды исходного числа, причем из двух младших разрядов (единиц и десятков) сформировать первую сумму, а из двух старших разрядов – вторую, после чего вывести на экран результат выражения равенства полученных сумм.
Первую сумму будем хранить в переменной right, а вторую – в переменной left (выбрано по расположению цифр в записи числа). Значение обоих из них не может превосходить 18 (т. к. для наибольшего допустимого числа 9999 обе суммы равны 9 + 9 = 18), поэтому для их описания используем тип integer.
Более детальный разбор алгоритма:
1) Вводим число n;
2) Присваиваем переменной right значение последней цифры числа n, потом отбрасываем эту цифру, затем повторяем то же самое, но на этот раз уже прибавляем добытую цифру к прежнему значению right:
right := n mod 10;
n := n div 10;
right := right + n mod 10;
n := n div 10;
3) Присваиваем переменной left последнюю цифру n, отбрасываем ее и прибавляем к right единственную оставшуюся в переменной n цифру:
left := n mod 10;
n := n div 10;
left := left + n;
4) Выводим на экран результат сравнения накопленных сумм:
writeln(left = right);
5) Сравниваем left и right — подводим итог:
if left = right then writeln(‘Билет является счастливым’) else writeln(‘Билет не является счастливым’);
Является ли четырехзначное число счастливым билетом
Код:
program Schastliviy_bilet;
var
n: integer;
left, right: integer;
begin
readln(n);
right := n mod 10;
n := n div 10;
right := right + n mod 10;
n := n div 10;
left := n mod 10;
n := n div 10;
left := left + n;
writeln(left=right);
if left=right then writeln(‘Билет является счастливым’)
else writeln(‘Билет не является счастливым’);
end.