我和我的一个朋友正试图这样做,但没有运气,最终得到了这个。 (我们对python还是比较基础的,这是我第一次使用堆栈溢出。)
cubelist = []
while True:
maxcube = int(input("What is the maximum parameter: "))
for i in range(1, maxcube):
nums = i
nums = abs(nums)
if round(nums ** (1 / 3)) ** 3 == nums:
cubelist.append(i)
break
print(cubelist)
pos = 0
while True :
CubeSum = cubelist[pos] + cubelist[pos+1] + cubelist[pos+2]
pos += 1
for i in cubelist:
if CubeSum > i:
cubelist.remove(cubelist[len(cubelist)-1])
if CubeSum == i:
print(CubeSum)
print("Valid")
if CubeSum < i:
print(CubeSum)
print("Invalid")
break
答案 0 :(得分:0)
您以错误的方式求和,只取三个连续的元素。如果您想找到所有可能的组合,您应该使用三个不同的索引迭代 reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
startActivity(getIntent());
}
});
列表。此外,您在查找 cubelist
时也执行了太多计算。检查此解决方案:
cubelist
我的输出:
cubelist = []
maxcube = int(input("What is the maximum parameter: "))
counter = 1
while True:
cube = counter ** 3
if cube <= maxcube:
cubelist.append(cube)
counter += 1
else: break
print(cubelist)
pos = 0
ln = len(cubelist)
for i in range(ln-2):
for j in range(i+1, ln-1):
for k in range(j+1, ln):
_sum = cubelist[i] + cubelist[j] + cubelist[k]
if _sum in cubelist:
print('{0}={1}+{2}+{3} => valid'.format(_sum, cubelist[i], cubelist[j], cubelist[k]))
#else:
# print('{0} => invalid'.format(_sum))