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

решите ,завтра нужно сдать ,очень нужно с решением. Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней.
Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может
a) добавить в одну из куч (по своему выбору) два камня или
б) увеличить количество камней в куче в три раза.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию,
что в обеих кучах всего будет 48 камней или больше.
Задание 1. Для каждой из начальных позиций (5, 14), (7, 13) укажите, кто из игроков имеет
выигрышную стратегию.
Задание 2. Для каждой из начальных позиций (5, 13), (6,13), (7,11) укажите, кто из игроков имеет
выигрышную стратегию.
Задание 3. Для начальной позиции (6,12) укажите, кто из игроков имеет выигрышную стратегию.
Постройте дерево всех партий, возможных при указанной выигрышной стратегии.

Показать ответ
Ответ:
Кабасена05
Кабасена05
09.02.2020 04:38
Вариант №1 (не совсем удачный, как было отмечено в комментариях).

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
var n,i,m:integer;
flag:boolean;

begin
  readln(n);
  flag:=false;
  if (n mod 2<>0)then i:=n-1 else i:=n;
  while i>0 do begin  
    if power(2,i)<=n then begin
      write(power(2,i),' '); flag:=true;
    end;
    i:=i-2;
end;
if not flag then writeln(0);
end.

Тест №1
1025
1024 256 64 16 4

Тест №2
1
0

Вариант №2

var a,i,n: integer;
begin
  a:=1;readln(n);
  i:=trunc(log2(n)); //получим степень двойки для n
  //если i нечетное,
  //то первое искомое число получаем путем сдвига влево на i-1 в
  //двоичном представлении числа иначе сдвиг на i
  if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;
  //далее получаем числа сдвигая вправо на 2 разряда
  //в двоичном представлении числа
  while a>=2 do begin
    write(a,' ');
    a:=a shr 2;
  end;
end.

Тестовое решение:
2147483647
1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4
0,0(0 оценок)
Ответ:
kidashapro
kidashapro
09.02.2020 04:38

ответ:Вариант №1 (не совсем удачный, как было отмечено в комментариях).

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)

var n,i,m:integer;

flag:boolean;

begin

 readln(n);

 flag:=false;

 if (n mod 2<>0)then i:=n-1 else i:=n;

 while i>0 do begin  

   if power(2,i)<=n then begin

     write(power(2,i),' '); flag:=true;

   end;

   i:=i-2;

end;

if not flag then writeln(0);

end.

Тест №1

1025

1024 256 64 16 4

Тест №2

1

0

Вариант №2

var a,i,n: integer;

begin

 a:=1;readln(n);

 i:=trunc(log2(n)); //получим степень двойки для n

 //если i нечетное,

 //то первое искомое число получаем путем сдвига влево на i-1 в

 //двоичном представлении числа иначе сдвиг на i

 if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;

 //далее получаем числа сдвигая вправо на 2 разряда

 //в двоичном представлении числа

 while a>=2 do begin

   write(a,' ');

   a:=a shr 2;

 end;

end.

Тестовое решение:

2147483647

1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4

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