В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Yuchvvjv
Yuchvvjv
21.07.2020 11:44 •  Информатика

Два игрока, Сергей и Анатолий, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает
Сергей. За один ход игрок может из каждой кучи убрать потри камня
или убрать целиком одну кучу, а другую разделить на две равные (если
это позволяет количество камней).
Игра завершается после того хода, когда хотя бы одна куча становится
пустой или когда невозможно сделать очередной ход по правилам. Побеждает
тот, кто сделал последний ход. В начальный момент времени в
одной куче лежит N камней, а в другой — К камней.
Будем говорить, что игрок имеет выигрышную стратегию, если он
может выиграть при любых ходах противника. Описать стратегию игрока
— значит описать, какой ход он должен сделать в любой ситуации, которая
ему может встретиться при различной игре противника.
Известно, что после неудачного первого хода Сергея Анатолий выиграл
первым своим ходом. При каком наибольшем значении К это возможно.
если N — 32?

Показать ответ
Ответ:
tereshkova11
tereshkova11
08.04.2021 13:29
Const 
n=5;

Var
 ar:array[1..n] of integer;
 ar2:array[1..n] of integer;
 i,k:integer;

 function prost(a:integer):boolean;
 var i:integer;
 b:boolean;
  begin
  b:=true;
   for i:=2 to a div 2 do
    if a mod i=0 then
     begin;
      b:=false;
      break;
     end;
   if a=1 then b:=false;
  prost:=b;
 end;

  begin;
 randomize;
 k:=0;
  for i:=1 to n do
   begin;
    ar[i]:=random(101);
    write(ar[i]:4);
   end;
  writeln;
  for i:=1 to n do
  if prost(ar[i]) then
   begin;
    inc(k);
    ar2[k]:=ar[i];
    write(ar2[k]:4);
   end;
end.
0,0(0 оценок)
Ответ:
svetaobukhova1
svetaobukhova1
26.09.2020 13:24
Программа, которая использует два массива

var 
c, a: array[1..20] of integer; 
i: integer;
begin 
write('Первый массив '); 
for i := 1 to 20 do   begin   
c[i] := i * (-5);   
write(c[i], ' '); 
end; 
writeln; 
write('Преобразованный массив '); 
for i := 1 to 20 do   begin   
a[i] := c[20 - i + 1];   
write(a[i], ' '); 
end;  
end.

ИЛИ  Программа не использующая два массива, а просто переворачивающая первый

var 
c: array[1..20] of integer; 
i: integer;
begin  write('Первый массив '); 
for i := 1 to 20 do   begin   
c[i] := i * (-5);   
write(c[i], ' '); 
end; 
writeln; 
write('Преобразованный массив '); 
for i := 20 downto 1 do  write(c[i], ' '); 
end.

Обе программы работают!
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота