所以,我试着看看我是否可以写出代码,在Python中为n个人(在圈子里)解决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‘对象是不可调用的。
此外,我似乎不能理解如何让程序返回n= 100 ( 73)的真实解,考虑到我使用了一个奇怪的for循环,它将返回2^i的每个值的解,直到2^10为止一直小于n
发布于 2019-09-21 21:30:18
您在打印行中缺少*。它应该是
print(2*(n-(2**i))+1)根据您的代码,您正在调用一些2(某物),其中as int是不可调用的。你的解决方案也不完全正确。它对完美2异能不起作用。
查看this link以获得不同的方法和证明
https://stackoverflow.com/questions/52860657
复制相似问题