Josephus for-loop in Python



所以,我试着看看我是否可以编写代码来解决Python中的约瑟夫斯问题(在圈子里(。

我是业余爱好者,所以请耐心等待。

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

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' 对象不可调用。

此外,我似乎无法理解如何让程序返回 n = 100(即 73(的真正解决方案,考虑到我使用了一个奇怪的 for 循环,它会为小于 n 的每个值返回解决方案,直到 2^10

打印行中缺少 *。 它应该是

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

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

查看此链接以获取不同的方法和证明

相关内容

  • 没有找到相关文章

最新更新