Является ли четырехзначное число счастливым билетом

Задача. Проверить, является ли четырехзначное число счастливым билетом. Дано четырехзначное число. Проверить, является ли оно «счастливым билетом».

Счастливым билетом называется число, в котором:

а) при четном количестве цифр в числе сумма цифр его левой половины равна сумме цифр его правой половины;
б) при нечетном количестве цифр – то же самое, но с отбрасыванием серединной цифры.

Например
Рассмотрим число 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.

Опубликовано: 24.03.2018 Обновлено: 15.03.2020
Поделись с друзьями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

5 × 1 =