Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Олимпиадные задачи с решениями на Turbo Pascal


Информационный Канал Subscribe.Ru



Здравствуйте, уважаемые подписчики. После продолжительного перерыва рассылка вновь возобновлена. Правда, она сменила ведущего. Алексей передал её мне. Представлюсь - 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.

Новый ведущий, Aslof aslof@mail.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное