page contents

如何组合1,2,5这三个数使其和为100?

轩辕小不懂 发布于 2021-10-09 15:36
阅读 1079
收藏 0
分类:Golang

求出用1,2,5这三个数不同个数组合的和为100的组合个数。为了更好地理解题目的意思,下面给出几组可能的组合:100个1,0个2和0个5,它们的和为100;50个1, 25个2,0个5的和也是100;50个1,20个2,2个5的和也为100。

2107
Nen
Nen
- 程序员

数字规律法针对这种数学公式的运算,一般都可以通过找出运算的规律进而简化运算的过程,对于本题而言,对x+2y+5z=100进行变换可以得到x+5z=100-2y。从这个表达式可以看出,x+5z是偶数且x+5z<=100。因此,求满足x+2y+5z=100组合的个数就可以转换为求满足“x+5z是偶数且x+5z<=100”的个数。

可以通过对z的所有可能的取值(0<=z<=20)进行遍历从而计算满足条件的x的值。

当z=0时,x的取值为0,2,4,…,100(100以内所有的偶数),个数为(100+2)/2

当z=1时,x的取值为1,3,5,…,95(95以内所有的奇数),个数为(95+2)/2当z=2时,x的取值为0,2,4,…,90(90以内所有的偶数),个数为(90+2)/2

当z=3时,x的取值为1,3,5,…,85(85以内所有的奇数),个数为(85+2)/2……当z=19时, x的取值为5, 3, 1(5以内所有的奇数),个数为(5+2)/2

当z=20时, x的取值为0(0以内所有的偶数),个数为(0+2)/2根据这个思路,实现代码如下:

算法性能分析:这种方法循环的次数为21。



请先 登录 后评论