Корова по имени Бесик красит забор Фермеру Арсену. Бесик начинает в позиции 0 и выполняет последовательность из N операции. (1 <= N <= 100,000) вида "10 L", что означает покрасить 10 единиц влево и "15 R", что означает покрасить 15 единиц вправо. Бесик может уйти не далее чем на 109 единиц от исходной точки.
По имеющей инструкции Арсен хочет узнать область забора, которая покрашена как минимум двумя слоями краски.
Входные данные
В первой строке дается число N(1≤N≤105). Далее каждая из N строк описывает одну из N инструкций.
Выходные данные
Выведите ответ на задачу
Пример
входные данныеСкопировать
6
2 R
6 L
1 R
8 L
1 R
2 R
выходные данныеСкопировать
6
Любой язык
procedure nod( var dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 :real; );
var a:array[1..6] of real;
i : integer;
begin
dv1:=100;
tr1:=100;
pt1:=100;
for i:= low(a) to high (a) do begin
readln(a[i]);
repeat
if( (a[i] mod 2) =0) then begin
a[i]:=a[i]/2;
dv:=dv+1;
end
else if( ( a[i] mod 3)=0) then begin
a[i]:=a[i]/3;
tr:=tr+1;
end
else if ( ( a[i] mod 5)=0) then begin
a[i]:=a[i]/5;
pt:=pt+1;
end;
untill(a=1);
if dvif trif ptdv:=0;
tr:=0;
pt:=0;
end;
if dv1>0 then dv2:=dv1*2 else dv2:=1;
if tr1>0 then tr2:=tr1*3 else tr2:=1;
if pt1>0 then pt2:=pt1*5 else pt2:=1;
nod:=dv2*tr2*pt2;
writeln(nod);
end;
begin
nod( dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 );
end.
end;
//PascalABC.NET (версия 3.1, сборка 1196 от 09.03.2016)
Var n, i: integer;
Begin
writeln ('Введите число');
readln(n);
writeln('Делители числа:');
for i := 1 to n div 2 do
if (n mod i) = 0 then begin
write(i,' ');
end;
End.
Задача №2 (алгоритм не очень шустрый, но работает и понятный)
//PascalABC.NET (версия 3.1, сборка 1196 от 09.03.2016)
var
a, b, x, y, nod: integer;
begin
writeln('Введите a,b');
readln(a, b);
x := a;y := b;
while x <> y do
if x > y
then x := x - y
else y := y - x;
nod := x;
writeln('NOD(', a, ',', b, ')=', nod);
end.