错误的结果在一个项目euler 31
Wrong result in a project euler 31
我试图解决项目euler 31:
在英格兰,货币由英镑、英镑和便士组成流通中有八种硬币:
1便士、2便士、5便士、10便士、20便士、50便士、1英镑(100便士)和2英镑(200便士)。有可能通过以下方式赚2英镑:
1×£1+1×50p+2×20p+1×5p+1×2p+3×1p
2英镑可以有多少种不同的方式用任何数量的硬币制作?
使用此代码:
#define to2(x) ((x)/2+1)
int to5(x)
{
int acc=1;
for(;x>0;x-=5)
acc+=to2(x);
return acc;
}
int to10(x)
{
int acc=1;
for(;x>0;x-=10)
acc+=to5(x);
return acc;
}
int to20(x)
{
int acc=1;
for(;x>0;x-=20)
acc+=to10(x);
return acc;
}
int to50(x)
{
int acc=1;
for(;x>0;x-=50)
acc+=to20(x);
return acc;
}
int to100(x)
{
int acc=1;
for(;x>0;x-=100)
acc+=to50(x);
return acc;
}
int main()
{
int test = to100(200)+1;
printf("%d",test);
return 0;
}
但代码给出的是73685,而不是73682,但我不知道为什么,有人能帮我吗?
为什么要将acc
初始化为1?(当x
是函数数的倍数时,这是有意义的,但仅限于此。)将其更改为0,并将循环条件更改为x>=0
。(如果我理解你的代码)。
这个问题不需要C代码来解决,它是一个集合选择的问题。你需要求解number of ways to select n coins where n > 0 and sum = 2£
,你应该查阅集合论
这应该可以帮助你找到一个线性方程来计算这个数字。
相关文章:
- 运行同一解决方案的另一个项目的项目
- 从链接列表c++中删除一个项目
- 仅从无序集合中删除一个项目
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- 如何使用另一个项目命名空间?
- 如何在不创建新配置的情况下对两个不同解决方案使用的一个项目使用不同的 #defines
- 数组中无法解释的最后一个项目
- 单元测试类无法在我要测试的同一解决方案中的另一个项目中找到类
- 有没有更好的方法来检测向量中一个项目的多次出现?
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- 如果我尝试将对话框从一个项目移动到另一个项目,我是否需要从 rc 文件中复制 DESIGNINFO、对话框信息和AFX_
- OpenCV:文件存储操作员">>"在一个项目中工作,但不在另一个项目中工作(在同一类上)
- 如何将另一个项目中用 C 编写的源代码包含在我自己的项目中,C++在 Visual Studio 中
- 什么 STL 算法可以确定容器中的一个项目是否满足谓词?
- 将过滤器中的所有.cpp和.h移动到另一个项目并更正其文件夹位置
- 在另一个项目中包括继承的类时,抽象类的链接器错误
- 创建在另一个项目中定义的类对象
- 我正在尝试在Eclipse中构建一个C 项目,但是即使在使用MINGW路径设置路径变量之后,也会获得构建错误
- 在包含相同项目的向量中删除一个项目
- 将多个原型文件包含在一个项目中会导致protobuf_AssignDescriptorsOnce()已经有一个主体