这里我将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。
上述逻辑出了什么问题?如果上述逻辑完全错误,那么正确的方法应该是什么。
答案 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