Shved11
22.04.2022 14:57

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 1 камень или 5 камней. Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 15 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 47. Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в которой будет 47 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 46. Выполните следующие задания, в каждом случае обосновывая свой ответ.

1) Укажите все такие значения числа S, при которых Петя может выиграть в один ход. Обоснуйте, что найдены все нужные значения Б, и укажите выигрывающие ходы.
2) Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию Вани.
3) Укажите два значения S, при которых у Пети есть выигрышная стратегия, причём Петя не может выиграть за один ход, но может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для указанных значений S опишите выигрышную стратегию Пети.
4) Укажите значение S, при котором у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, однако у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
По5643
06.02.2020 18:46
Package main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
     public static BufferedReader READER = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String[] args) throws IOException {
        int N = Integer.parseInt(READER.readLine());
        int[] array = new int[N];
        for(int i = 0; i < array.length; ++i)
            array[i] = Integer.parseInt(READER.readLine());
        System.out.println("Negative: " + Main.function(array));
    }
     public static boolean function(int[] array) {
        for(int number : array)
            if(number >= 0) return false;
        return true;
     }
}
0,0(0 оценок)
Ответ:
//Pascal ABC.NET 3.1 сборка 1219

Var
 k,n,max:integer;

 procedure hase(var k,n,max:integer); //сама последовательность
 begin
  if not(odd(n)) then n:=n div 2 else n:=n*3+1; //условие про чётность
  writeln(n); //вывод нового члена последовательности
  inc(k); //увеличение значения счётчика шагов
  if max<n then max:=n; //поиск вершины
 end;

  procedure start(var k,n,max:integer); //название процедуры намекает
 begin
  readln(n);
  k:=0;
  writeln('Seq:');
  max:=integer.MinValue;
  while n<>1 do
  hase(k,n,max);
  writeln('Шаги:',k);
  writeln('Вершина:',max);
 end;
 begin
 start(k,n,max);
end.
Пример ввода:
6
Пример вывода:
Seq:
3
10
5
16
8
4
2
1
Шаги:8
Вершина:16
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота