Здесь у меня есть N количество карточек, пронумерованных от 1 до N, помещенных в круглый стол, так что карта 1 находится между картой 2 и картой N. Все карты первоначально перевернуты. Цель состоит в том, чтобы повернуть все карты лицевой стороной вверх.Игра в карточные игры
Скажем, мы касаемся карты i, касаясь карты, я поверну карточки i-1, i, i + 1 лицом вверх. аналогично касаясь карты N, карты N-1, N, 1-й карты будут обращены вверх. Я хочу определить минимальное количество касаний, необходимых для просмотра всех карт.
вот что я пытался в питона
q = int(raw_input())
if q==1 or q==2:
print "1"
else:
r = q%3
l = q/3
print r+l
д может быть как 10^20.
Что не так с вышеуказанной логикой и в случае, если вышеуказанная логика совершенно неверна, что должно быть правильным подходом.
Вопросы алгоритмов, а не на вопросы о механики программирования, имеют свой собственный сайт. См. Http://meta.stackexchange.com/questions/129598/which-computer-science-programming-stack-exchange-do-i-post-in рекомендации по выбору подходящего сайта StackExchange для ответа на вопрос. –
(«Что не так с логикой выше» также должно быть более ясным - хороший вопрос описывает ** конкретное поведение или обнаруженную ошибку). –
Логика неверна, потому что вы хотите только один дополнительный флип, если q% 3 - это 1 или 2, а не 2, если q% 3 равно 2. Например, с q = 5 этот код напечатает 3, но вы можете, очевидно, перевернуть все карты за 2 оборота – Dleep