Здравствуйте, уважаемые подписчики. После
продолжительного перерыва рассылка вновь возобновлена. Правда, она сменила
ведущего. Алексей передал её мне. Представлюсь - Aslof. Сегодня предлагаю
вашему вниманию
очень лёгкую задачу про счастливые билеты. Напишите мне на aslof@mail.ru, если
считаете, что таким задачам не стоит уделять время.
ЗАДАЧА. Автобусные билеты в
рулоне пронумерованы от 000001 до 999999. Составить программу, выводящую
на
экран количество и номера (в несколько столбиков) всех счастливых билетов
в
некотором диапазоне, организовав запрос начального и конечного номера
билета
диапазона.
Примечание: Счастливым считать тот билет, у которого сумма первых
трех цифр равна сумме трех последних.
Решение
var
start,stop:longint;
q,w:longint;
_1,_2:byte;
num:longint;
buf:byte;
label err;
procedure output(number:longint);
begin
if buf<5 then begin
write(number); write(' '); buf:=buf+1;
end else
begin
writeln(number);buf:=0;
end;
end;
Begin
buf:=0;num:=0;
err:write('Начальный номер билета ');
readln(start); if start<1 then goto err;
write('Конечный номер билета ');
readln(stop);
if stop<1 then goto err;
if stop>999999 then goto err;
if stop<start then goto err;{ввод и проверка всех
условий}
for q:=start to stop do begin
w:=q;
_1:=trunc(w/100000); {первая цифра номера}
w:=w-_1*100000; {теперь w в диапазоне 1-99999}
_1:=_1+trunc(w/10000); {прибавим вторую цифру}
w:=w-10000*trunc(w/10000);{диапазон 1-9999}
_1:=_1+trunc(w/1000); {3}
w:=w-1000*trunc(w/1000); {1-999}
_2:=trunc(w/100); {первая цифра второй части}
w:=w-_2*100; {теперь w в диапазоне 1-99}
_2:=_2+trunc(w/10); {прибавим вторую цифру}
w:=w-10*trunc(w/10);{диапазон 1-9}
_2:=_2+w; {3}
if (_1=_2) then begin output(q);num:=num+1;
{считаем кол-во счастливых билетов}end;
end;
writeln;
write('Общее количество счастливых билетов в введённом диапазоне ');
writeln(num);
readln;
end.