Как решить задачу о математической игре Баше? Суть задачи:
Есть N предметов, игроки по очереди берут от 1 до K предметов, выигрывает тот, кто возьмет последний предмет.
Задача в том, чтобы проанализировать сыгранную партию и для каждого хода определить правильный он или ошибочный. Ошибочный ход - если в этой ситуации можно было сходить иначе, гарантируя себе в дальнейшем выигрыш независимо от игры соперника. Правильный ход - это ход, который не является ошибочным.
К тому же, когда позиция проигрышная, то любой ход верный, т.к. его можно считать оптимальным в силу того, что результат всё равно проигрыш.Входные данные:
N, K, P - кол-во сделанных ходов игроками. P ходов.
(2 ≤ N ≤ 10000, 2 ≤ K ≤ 100, 2 ≤ P)Примеры:
Ввод
10 5 3
3
3
4
Вывод
F
F
T
Ввод
10 5 3
4
3
3
Вывод
Т
Т
T
Вот код, но не на все тесты он показывает правильный результат, не могу найти ошибку:

21 Авг 2019 в 06:12
196 +1
0
Ответы
1

// Функция для определения является ли текущий ход ошибочным
bool isWrongMove(int n, int k) {
if (n % (k + 1) == 0) {
return true;
} else {
return false;
}
}

int main() {
int N, K, P;
cin >> N >> K >> P;

int totalMoves = 0;
for (int i = 0; i < P; i++) {
int currentMove;
cin >> currentMove;
totalMoves += currentMove;
if (isWrongMove(N - totalMoves, K)) {
cout << "F" << endl;
} else {
cout << "T" << endl;
}
}
return 0;

}

20 Апр 2024 в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир