Определяет количество счастливых билетов в заданном интервале — Pascal(Паскаль)

uses crt;
var sq,n1,n2,w:longint;
b1,b2,b3,b4,b5,b6,sn1,sn2,s1,s2,s3,s4,s5,s6:longint;
c:char;
label lb1;
begin
clrscr;
writeln('Программа определяет количество "счастливых" трамвайных билетов с номерами,');
writeln('принадлежащими заданному интервалу номеров от нижнего до верхнего интервалов');
writeln('(нижний интервал < верхнего интервала).Граничные номера входят в интервал.');
writeln('Номер трамвайного билета представляет собой шестизначное неотрицательное число,');
writeln('записываемое без подавления незначащих нулей. Номер считается счастливым, если');
writeln('суммы первых трех и последних трех его цифр равны. Билет с номером 000000 ');
writeln('существует. Для продолжения наж-ми Enter!!!');
readln;
lb1:clrscr;
w:=0;
write('Введите нижний интервал: ');
readln(n1);
write('Введите верхний интервал: ');
readln(n2);
b1:=n1 div 100000;            {Раскладываем нижний интервал на цифры}
b2:=(n1-(b1*100000)) div 10000;
b3:=(n1-(b1*100000+b2*10000)) div 1000;
b4:=(n1-(b1*100000+b2*10000+b3*1000)) div 100;
b5:=(n1-(b1*100000+b2*10000+b3*1000+b4*100)) div 10;
b6:=(n1-(b1*100000+b2*10000+b3*1000+b4*100+b5*10)) div 1;
for s1:=b1 to 9 do               {Первоначально задаем нижний интервал}
 for s2:=b2 to 9 do begin b2:=0;
  for s3:=b3 to 9 do begin b3:=0;
   for s4:=b4 to 9 do begin b4:=0;
    for s5:=b5 to 9 do begin b5:=0;
     for s6:=b6 to 9 do
     begin
      b6:=0;
      sn1:=s1+s2+s3;
      sn2:=s4+s5+s6;
      sq:=s1*100000+s2*10000+s3*1000+s4*100+s5*10+s6;
      if sq>n2 then break;
      if sn1=sn2 then
      begin
        w:=w+1;
{        writeln(w,')',' Счастливый билет => ',s1,s2,s3,s4,s5,s6);}
       end;
   end;end;end;
   end;
end;
writeln('Число счастливых билетов равно = ',w);
writeln('Ещё раз (Yes/No) ?');
c:=readkey;
if (c=#121)or(c=#89) then goto lb1
else
end.

Leave a Comment

8 + 2 =