Python中的Josephus for循环

时间:2018-10-17 17:38:41

标签: python-3.6 josephus

因此,我试图查看是否可以编写代码以解决n人(在圈子中)用Python解决的Josephus问题。

我是一个业余爱好者,所以请忍受我。

这是我想出的代码,但是有一些问题。

n = input(int)

for i in range(0,10):
  if 2**i < n:
    print (2(n-(2**i))+1)

首先,它给出TypeError并说'int'和'str'的实例之间不支持'<'。

第二,如果我替换

n = input(int)

使用

n = 100

然后给出TypeError:'int'对象不可调用。

此外,考虑到我使用了一个怪异的for循环并且它会返回解决方案,所以我似乎无法理解如何使程序返回n = 100(即73)的真实解。直到2 ^ 10的所有2 ^ i小于n的值

1 个答案:

答案 0 :(得分:0)

打印行中缺少*。 应该是

print(2*(n-(2**i))+1)

根据您的代码,您正在调用一些2(某物),其中int是不可调用的。您的解决方案也不完全正确。不能完美使用2次幂。

this link中查看不同的方法和证明