因此,我试图查看是否可以编写代码以解决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的值
答案 0 :(得分:0)
打印行中缺少*。 应该是
print(2*(n-(2**i))+1)
根据您的代码,您正在调用一些2(某物),其中int是不可调用的。您的解决方案也不完全正确。不能完美使用2次幂。
在this link中查看不同的方法和证明