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

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) два камня или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 44. Победителем считается игрок, сделавший последний ход, то есть первым получивший такую позицию, что в кучах всего будет 44 или больше камней.

В начальный момент в первой куче было 5 камней, во второй куче – S камней; 1 ≤ S ≤ 38.

При каких S: 1 а) Петя выигрывает первым ходом;

б) Ваня выигрывает первым ходом?

2. Назовите одно любое значение S, при котором Петя может выиграть своим вторым ходом.

3. Назовите значение S, при котором Ваня выигрывает своим первым или вторым ходом.​

Показать ответ
Ответ:
2006yfcnz
2006yfcnz
22.02.2020 11:52
//использую два масива. TableRevers - это массив изменненый, где повторяются элементы. Table = этот массив заполняет пользователь.

#include <iostream>
#include <cmath>

using std::cout;
using std::cin;
using std::endl;

int main()
{
int close = -1; //значение для прекращения ввода массива
int table[250]; //масив первый
int tableRevers[500]; //массив для преобразования
int input; //ввод
int i = 0; //для счета кол-ва элементов
int y = 0; //для заполнения

cout << "To close enter: " << close << endl; //уведомление
while(cin >> input, input != close) //заполняем массив
{
table[i] = input;
i++;
}

for(int t = 0; i * 2 > t; t = t + 2) //делаем измененный массив
{
tableRevers[t] = table[y];
tableRevers[t + 1] = table[y];
y++;
}

for(int t = 0; i * 2 > t; t++) //выводис измененный массив
{
cout << endl << tableRevers[t];
}

return 0;
}
0,0(0 оценок)
Ответ:
foxylol1
foxylol1
16.02.2021 14:20
PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018Внимание! Если программа не работает, обновите версию!

begin

 var n := ReadlnInteger('N=');

 var R := new integer[n];

 repeat

   var a := ReadlnString.ToCharArray;

   if a.Length <> N then break;

   if a.Where(c -> c = '+').Count = 1 then

     Inc(R[a.IndexOf('+')])

 until False;

 R.Transform(t -> t >= 0.07 * N ? 1 : 0);

 R.Numerate.Where(t -> t[1] = 1).Select(t -> t[0]).Println

end.

Пример

(окончание ввода - строка длины отличной от N)

N= 5

-+---

--+--

-+---

+

-+---

--+--

-+---

+

+

-+---


1 2 3 5

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