Поделитесь своими знаниями, ответьте на вопрос:
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить в кучу четыре камня, или увеличить количество камней в куче в 2 раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 19 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 52 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 51. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
#include <iostream>
using namespace std;
int main()
{
int number;
int positive = 0;
int negative = 0;
int amount = 0;
cin >> number;
while (number != 0)
{
amount += number;
if (number > 0)
{
positive++;
}
else if (number < 0)
{
negative++;
}
cin >> number;
}
cout << amount << endl << positive - negative;
}
Объяснение:
#include <iostream> // Библиотека ввода - вывода
using namespace std; // Пространство имён
int main()
{
int number; // Целочисленная переменная для хранения вводимых с клавиатуры чисел
int positive = 0; // Целочисленная переменная для хранения количества положительных чисел
int negative = 0; // Целочисленная переменная для хранения количества отрицательных чисел
int amount = 0; // Целочисленная переменная для хранения суммы чисел последовательности
cin >> number; // Вводим число с клавиатуры
while (number != 0) // Пока значение переменной number ≠ 0
{
amount += number; // Суммируем
if (number > 0) // Если значение переменной number - положительное
{
positive++; // Добавляем единицу
}
else if (number < 0) // Если значение переменной number - отрицательное
{
negative++; // Добавляем единицу
}
cin >> number; // Вводим число с клавиатуры
}
cout << amount << endl << positive - negative; // Выводим сумму чисел последовательности и разность между количеством положительных и отрицательных
}