Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2015, 15:12   #1
nazerke123
Новичок
Джуниор
 
Регистрация: 28.09.2015
Сообщений: 2
Вопрос Помогите написать программу (два игрока берут камни из кучки камней. - за один ход игрок может забрать из кучи от 1 до 6 камней

Саша и Миша играют в игру. Игра происходит по следующим правилам:
- изначально на столе лежит куча из N камней;
- за один ход каждый игрок может забрать из кучи от 1 до 6 камней;
- проигрывает тот, кто не может сделать ход (потому что куча пуста);
- первой ходит Саша.
Если выиграет Саша вывести "Wins Sasha" Если выиграет Миша вывести "Wins Misha"
Из перечисленных чисел N выберите те, при которых Саша выиграет (при условии, что оба игрока играют оптимально).
76
70
87
63
33
69
56
15417
18806
14195
18029
15954
nazerke123 вне форума Ответить с цитированием
Старый 28.09.2015, 16:05   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Задачка тривиальная и многократно описанная называется НИМ. Выигрывает тот, кто сделал первый ход. Там есть особая и не особая позиция. Если делаешь ход в особую позицию, у оппонента нет выбора, он вынужден попадать в не особую. Вот и весь прикол.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 16:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Выигрывает тот, кто сделал первый ход.
это не так.
и я сейчас это Вам докажу на примере.

на столе лежит 7 камней.
Ваш ход первый.
Сколько Вы возьмёте?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2015, 16:41   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
это не так.
и я сейчас это Вам докажу на примере.

на столе лежит 7 камней.
Ваш ход первый.
Сколько Вы возьмёте?
Все. Ваш ход? Конечно, это прикол. Но, в такой постановке у задачи только одно решение. Кто ходит первым, тот проигрывает. Я про классическую задачу. Имеется N кучь с M камнями. можно взять любое количество камней, но только из одной кучи (хоть все). Для этой постановки, алгоритм давно известен. Ещё Гарднер его описал.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 28.09.2015 в 16:49.
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 16:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
на столе лежит 7 камней
По-моему в этой задаче должно быть не просто N а N в три раза превосходящее чем число тех, что можно разом взять. ИМХО условие с подпредвывертом
Цитата:
Все. Ваш ход?
Все ты не возьмешь. Можно не более 6-ти
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2015, 16:43   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Все. Ваш ход?
Вы не можете взять все, условие читайте...
Оно понятно, что если играть как Остап Бендер в шахматы, то всегда будем выигрывать...
waleri вне форума Ответить с цитированием
Старый 28.09.2015, 16:43   #7
nazerke123
Новичок
Джуниор
 
Регистрация: 28.09.2015
Сообщений: 2
По умолчанию

Любое число N
Примеры написаны под задачей
Как решать?
Заранее благодарю

Последний раз редактировалось nazerke123; 28.09.2015 в 16:45.
nazerke123 вне форума Ответить с цитированием
Старый 28.09.2015, 16:59   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
По-моему в этой задаче должно быть не просто N а N в три раза превосходящее чем число тех, что можно разом взять. ИМХО условие с подпредвывертом

Все ты не возьмешь. Можно не более 6-ти
Так я и сказал, что это прикол (в смысле мой). Но и условие не классическое. А думать над ним - лениво.
Цитата:
Сообщение от nazerke123 Посмотреть сообщение
Любое число N
Примеры написаны под задачей
Как решать?
Заранее благодарю
Предположу, но не факт. Если число камней делится на 6 без остатка, то тут нужно брать разницу кратную шести. Если не делится, проигрывает первый, сделавший ход.
Если есть желание поиграть в классический НИМ, могу доказать, что при любом раскладе, я всё равно выиграю сделав первый ход, т.к. знаю алгоритм.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 28.09.2015 в 17:18.
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 18:06   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я предположу другое
нужно брать остаток от деления на 7
если получили ноль, то "Wins Misha", иначе - "Wins Sasha"

например,
76 - "Wins Sasha"
70 - "Wins Misha"
87 - "Wins Sasha"
63 - "Wins Misha"
33 - "Wins Sasha"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2015, 18:44   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я предположу другое
нужно брать остаток от деления на 7
если получили ноль, то "Wins Misha", иначе - "Wins Sasha"

например,
76 - "Wins Sasha"
70 - "Wins Misha"
87 - "Wins Sasha"
63 - "Wins Misha"
33 - "Wins Sasha"
Хорошо. 76/6 = 12,666666666666666666666666666667
76/7 = 10,857142857142857142857142857143
И в том и в другом случае получаем дроби.
Не делится нацело.
Идём от обратного. Какое из ближайших чисел делится? 12*6 = 72. Я, забираю оставшиеся 4 камня и выигрываю, что не противоречит условиям.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
У Вас есть N камней с массами W1, W2 , … WN. Глеб2010 Помощь студентам 1 03.05.2012 15:02
(Классика) Куча камней сортировка НЕ пузырьком. Sega_AS Паскаль, Turbo Pascal, PascalABC.NET 1 28.04.2012 14:22
Задача - куча камней. InKo1 Общие вопросы C/C++ 11 04.01.2012 18:23
Может ли один модем Ethernet + USB раздавать интернет на два компа? Qosta Операционные системы общие вопросы 8 21.06.2010 21:14
Определить, может ли ладья за один ход перейти с одного из этих полей на другое amki6 Помощь студентам 3 01.04.2010 17:52