Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 蛮力解决方案为Project Euler问题31返回错误答案_Python - Fatal编程技术网

Python 蛮力解决方案为Project Euler问题31返回错误答案

Python 蛮力解决方案为Project Euler问题31返回错误答案,python,Python,我跟你有麻烦。 正确答案是73682,我的答案是73681。 问题是: 在英国,货币由英镑和便士组成。一般流通的硬币有八种: 1便士、2便士、5便士、10便士、20便士、50便士、1英镑(100便士)和2英镑(200便士) 可以通过以下方式获得2英镑: 1×1+1×50p+2×20p+1×5p+1×2p+3×1p 使用任意数量的硬币可以用多少种不同的方式制造2英镑 我的代码是: 计数器=0 对于范围(3)内的a: 对于范围(5)内的b: 如果100*a+50*b>200: 打破 对于范围(11)

我跟你有麻烦。 正确答案是73682,我的答案是73681。 问题是:

在英国,货币由英镑和便士组成。一般流通的硬币有八种: 1便士、2便士、5便士、10便士、20便士、50便士、1英镑(100便士)和2英镑(200便士)

可以通过以下方式获得2英镑: 1×1+1×50p+2×20p+1×5p+1×2p+3×1p

使用任意数量的硬币可以用多少种不同的方式制造2英镑

我的代码是:

计数器=0
对于范围(3)内的a:
对于范围(5)内的b:
如果100*a+50*b>200:
打破
对于范围(11)内的c:
如果100*a+50*b+20*c>200:
打破
对于范围(21)内的d:
如果100*a+50*b+20*c+10*d>200:
打破
对于范围(41)内的e:
如果100*a+50*b+20*c+10*d+5*e>200:
打破
对于范围(101)内的f:

如果100 *a+**b+**c++**+****+**f*p>问题是,你的代码不考虑你只有2元硬币的情况。您只需将变量
计数器
初始化为1即可解决此问题。

您的解决方案关闭1;看起来您只是错过了使用2英镑硬币而不使用其他硬币的情况。要匹配不同的方式,您可以使用
itertools
模块,请参见此处:@kaya3是正确的,代码中没有“200*X”。但是,不要为此添加循环,只需在1处开始
计数器
,就可以了。顺便说一句,欢迎使用堆栈溢出!查看和。