【发布时间】:2015-07-17 19:50:05
【问题描述】:
在这里,我将 N 数量从 1 到 N 的卡片放在圆桌中,这样卡片 1 位于卡片 2 和卡片 N 之间。所有卡片最初都是颠倒的。目的是将所有牌面朝上。
假设我们触摸一张卡片 i,触摸卡片 i 会使卡片 i-1,i,i+1 面朝上。类似地触摸卡片 N 将使卡片 N-1,N,1st 面朝上。 我想确定所有牌面朝上所需的最少接触次数。
这是我在 python 中一直在尝试的内容
q = int(raw_input())
if q==1 or q==2:
print "1"
else:
r = q%3
l = q/3
print r+l
q 可以大到 10^20。
上面的逻辑有什么问题,如果上面的逻辑完全错误,那么正确的方法应该是什么。
【问题讨论】:
-
关于算法的问题,而不是关于编程机制的问题,有自己的网站。请参阅meta.stackexchange.com/questions/129598/…,了解有关为问题选择适当 StackExchange 站点的指南。
-
(“上面的逻辑有什么问题”也应该更清楚——一个很好的问题描述了具体行为或看到的错误)。
-
逻辑错误,因为如果 q%3 为 1 或 2,您只需要一次额外翻转,如果 q%3 为 2,则不需要 2。例如,q = 5,该代码将打印一个3,但你显然可以在2回合内翻转所有卡片
-
@EmilianoSorbello 对!知道了。谢谢! :)
-
这不是招聘挑战问题吗??
标签: python playing-cards