纸牌游戏

时间:2015-07-17 19:50:06

标签: python playing-cards

这里我将N个编号从1到N的卡放在圆桌中,使得卡1在卡2和卡N之间。所有卡片最初都是颠倒的。目的是将所有卡面朝上。

让我们说我们触摸卡片i,触摸卡片我会将卡片i-1,i,i + 1面朝上。类似地触摸卡N将使卡N-1,N,第一张卡面朝上。 我想确定面对所有卡片所需的最小触摸次数。

这是我在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。

上述逻辑出了什么问题?如果上述逻辑完全错误,那么正确的方法应该是什么。

1 个答案:

答案 0 :(得分:0)

它应该是:

answer = q / 3 (+ 1 if q is not a multiple of 3)

这是一种简单的方法来编写这个代码:

q = int (raw_input()) # This isn't safe since it causes Type Errors easily but... whatever...
print (q / 3) + 1 * (q % 3 > 0) # Because 1 * True = 1, 1 * False = 0