用 Python 计算 n 人翻转的灯的数量的程序
假设我们有一个数字n,考虑一个房间里有n个拨动开关,并且那个房间里有n个人,他们按如下方式翻转开关-
人1来了并翻转了所有开关。
人2来了,拨动了2的倍数的开关:2,4,6,...
人i来并翻转i倍数的开关。等等。
我们必须找到最终将在位置上的开关数量。
因此,如果输入类似于n=5,那么输出将为2,因为最初灯泡是[0,0,0,0,0]。
在玩家1之后:[1,1,1,1,1]
在玩家2之后:[1,0,1,0,1]
在玩家3之后:[1,0,0,0,1]
在玩家4之后:[1,0,0,1,1]
玩家5之后:[1,0,0,1,0]
最后有2个灯处于ON状态
示例
让我们看看以下实现以获得更好的理解-
def solve(n):
l, r = 0, n
while l <= r:
mid = l + (r - l) //2
if mid * mid <= n < (mid + 1) * (mid + 1):
return mid
elif n < mid * mid:
r = mid
else:
l = mid + 1
n = 5
print(solve(n))输入
5输出结果
2
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语