Цитата:
Сообщение от alex9
А что надо изменить если брать от промежутка от N до M?
|
Вообще-то тогда задача довольно резко усложняется. Например, можно так:
Код:
Var
N,M,i:Byte;
P1,P2:Real;
Begin
Write('N = ');
Readln(N);
Write('M = ');
Readln(M);
P1:=1;
P2:=1;
If ((N mod 2)=0) and ((M mod 2)=0) then
begin
for i:=(N div 2) to (M div 2) do
P2:=P2*(2*i);
for i:=(N div 2) to (M div 2)-1 do
P1:=P1*(2*i+1);
end
else
If ((N mod 2)=0) and ((M mod 2)=1) then
begin
for i:=(N div 2) to (M div 2) do
P2:=P2*(2*i);
for i:=(N div 2) to (M div 2) do
P1:=P1*(2*i+1);
end
else
If ((N mod 2)=1) and ((M mod 2)=0) then
begin
for i:=(N div 2)+1 to (M div 2) do
P2:=P2*(2*i);
for i:=(N div 2) to (M div 2)-1 do
P1:=P1*(2*i+1);
end
else
If ((N mod 2)=1) and ((M mod 2)=1) then
begin
for i:=(N div 2)+1 to (M div 2) do
P2:=P2*(2*i);
for i:=(N div 2) to (M div 2) do
P1:=P1*(2*i+1);
end;
Writeln('P1 = ',P1:0:0,' P2 = ',P2:0:0);
Readln
End.