Составить программу, которая вычисляет сумму ряда с заданной точностью. нужная точность считается полученной, если очередное слагаемое оказалось по модулю меньше, чем (это и все последующие слагаемые учитывать не надо).
1. а) Паша может выиграть, если S = 21, ..., 30. При меньших значениях S за один ход нельзя получить кучу, в которой больше 30 камней. Паше достаточно увеличить количество камней на 10. При S < 21 получить за один ход больше 30 камней невозможно.
1. б) Вова может выиграть первым ходом (как бы ни играл Паша), если исходно в куче будет S = 20 камней. Тогда после первого хода Паши в куче будет 21 камень или 30 камней. В обоих случаях Ваня увеличивает количество камней на 10 и выигрывает в один ход.
2. Возможные значения S: 10, 19. В этих случаях Паша, очевидно, не может выиграть первым ходом. Однако он может получить кучу из 20 камней (при S=10 он увеличивает количество камней на 10; при S=19 - добавляет 1 камень). Эта позиция разобрана в п. 1 б. В ней игрок, который будет ходить (теперь это Вова), выиграть не может, а его противник (то есть Паша) следующим ходом выиграет.
3. Возможное значение S: 18. После первого хода Паши в куче будет 19 или 28 камней. Если в куче станет 28 камней, Вова увеличит количество камней на 10 и вы играет своим первым ходом. Ситуация, когда в куче 19 камней, разобрана в п. 2. В этой ситуации игрок, который будет ходить (теперь это Вова), выигрывает своим вторым ходом.
В таблице изображено дерево возможных партий при описанной стратегии Вовы. Заключительные позиции (в них выигрывает Вова) подчёркнуты. На рисунке это же дерево изображено в графическом виде (оба изображения дерева допустимы).
1.
program test;
var i,k2,k3,k4,k5:integer;
a:array [1..20] of integer;
begin
k2:=0;
k3:=0;
k4:=0;
k5:=0;
for i:=1 to 20 do
begin
a[i]:=random(4)+2;
if a[i]=2 then k2:=k2+1;
if a[i]=3 then k3:=k3+1;
if a[i]=4 then k4:=k4+1;
if a[i]=5 then k5:=k5+1;
write(a[i],' ')
end;
writeln;
writeln(k2);
writeln(k3);
writeln(k4);
write(k5)
end.
2.
var i,j,v:integer;
a:array [1..10] of integer;
begin
for i:=1 to 10 do
begin
a[i]:=random (100);
write(a[i]:3)
end;
for i:=1 to 9 do
for j:=1 to 9 do
if a[j]>a[j+1] then
begin
v:=a[j];
a[j]:=a[j+1];
a[j+1]:=v
end;
writeln;
for i:=1 to 10 do write(a[i]:3)
end.
3.
var a:array [1..10] of integer;
i,j,m,v:integer;
begin
randomize;
for i:=1 to 10 do
begin
a[i]:=random(100);
write(a[i]:3)
end;
writeln;
for i:=1 to 10 do
begin
m:=i;
for j:=i to 10 do
if a[m] mod 10 < a[j] mod 10 then m:=j;
v := a[i];
a[i]:= a[m];
a[m] := v;
write(a[i]:3)
end;
end.
Объяснение:
1. а) Паша может выиграть, если S = 21, ..., 30. При меньших значениях S за один ход нельзя получить кучу, в которой больше 30 камней. Паше достаточно увеличить количество камней на 10. При S < 21 получить за один ход больше 30 камней невозможно.
1. б) Вова может выиграть первым ходом (как бы ни играл Паша), если исходно в куче будет S = 20 камней. Тогда после первого хода Паши в куче будет 21 камень или 30 камней. В обоих случаях Ваня увеличивает количество камней на 10 и выигрывает в один ход.
2. Возможные значения S: 10, 19. В этих случаях Паша, очевидно, не может выиграть первым ходом. Однако он может получить кучу из 20 камней (при S=10 он увеличивает количество камней на 10; при S=19 - добавляет 1 камень). Эта позиция разобрана в п. 1 б. В ней игрок, который будет ходить (теперь это Вова), выиграть не может, а его противник (то есть Паша) следующим ходом выиграет.
3. Возможное значение S: 18. После первого хода Паши в куче будет 19 или 28 камней. Если в куче станет 28 камней, Вова увеличит количество камней на 10 и вы играет своим первым ходом. Ситуация, когда в куче 19 камней, разобрана в п. 2. В этой ситуации игрок, который будет ходить (теперь это Вова), выигрывает своим вторым ходом.
В таблице изображено дерево возможных партий при описанной стратегии Вовы. Заключительные позиции (в них выигрывает Вова) подчёркнуты. На рисунке это же дерево изображено в графическом виде (оба изображения дерева допустимы).