Два игрока, Паша и Вася, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Паша. За один ход игрок может: добавить в кучу один камень или увеличить количество камней в куче в 2 раза. Например, имея кучу из 20 камней, за один ход можно получить кучу из 21 камня или из 40 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится более 39. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 40 или больше камней.
В начальный момент в куче было S камней, 2 ≤ S ≤ 39.
Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.
Известно, что Вася выиграл своим первым ходом после неудачного первого хода Паши. Укажите минимальное значение S, когда такая ситуация возможна.
ответ:1) (1 б.) Верные ответы: 3;
2) (1 б.) Верные ответы: 4;
3) (1 б.) Верные ответы: 1; 2;
4) (1 б.) Верные ответы: 3;
5) (1 б.) Верные ответы: 1;
6) (1 б.) Верные ответы: 3;
7) (1 б.) Верные ответы: 4;
8) (1 б.) Верные ответы: 1;
9) (1 б.) Верные ответы: 3;
10) (1 б.) Верные ответы: 3;
11) (1 б.) Верные ответы: 2;
12) (1 б.) Верные ответы: 3;
13) (1 б.) Верные ответы: 4;
14) (1 б.) Верные ответы: 1;
15) (1 б.) Верные ответы: 1; 2;
16) (1 б.) Верные ответы: 1;
17) (1 б.) Верные ответы: 2;
18) (1 б.) Верные ответы: 1;
19) (1 б.) Верные ответы: 3;
20) (1 б.) Верные ответы: 2;
21) (1 б.) Верные ответы: 2;
Объяснение:
#include <iostream>
using namespace ::std;
int main()
{
setlocale(LC_CTYPE , "rus");
int n, i, j = 0, k = 0;
double s = 0;
cout << "Введите количество элементов: \n";
cin >> n;
float x;
float *massiv = new float[n];
if (!massiv)
{
cout << "Сбой программы!\n";
system("pause");
return 0;
}
cout << "Введите массив с " << ' ' << n << ' ' << "элементов\n";
for (i = 0; i < n; i++)
cin >> *(massiv + i);
cout << "Заданный массив: " << endl;
for (int i = 0; i < n; i++)
cout << *(massiv + i) << ' ' << endl;
for (i = 0; i<n; i++)
{
if (massiv[i]>0)
k++;
}
cout << " Количество положительных элементов = " << k << '\n';
for (i = 0; i<n; i++)
{
if (massiv[i] == 0) {
j = massiv[i];
x = i;
}
}
for (i = x; i<n; i++)
s += massiv[i];
cout << "Сумма =" << s;
float *massiv2 = new float[n];
if (!massiv2)
{
cout << "Сбой программы !\n";
system("pause");
return 0;
}
for (i = 0; i < n; i++)
if (massiv[i] <= 1)
{
massiv2[j] = massiv[i];
j++;
}
for (i = 0; i < n; i++)
if (fabs(massiv[i]) > 1)
{
massiv2[j] = massiv[i];
j++;
}
cout << endl << "Отсортированный массив: " << endl;
for (int j = 0; j < n; j++)
cout << '\n' << massiv2[j] << ' ';
delete[] massiv;
delete[] massiv2;
system("pause");
return 0;
}
В работо не сомневайся.