不用编程,有无简单的计算公式,比如要n位数的和为m的。
单纯从排列组合去算是很难算出来的,可以列一个表。
行表示位数从A1~A8,列表示和的值(0~72).
然后逐行填入相应的值,
第一行数据,1位数各位数和分别0~9的个数(1位数和的最大值是9)。结果所有值都是1.
第二行数据,2位数各位数和分别0~18的个数(2位数和的最大值是18)。
那么和值为0~18对应的和值分别是1 2......9 10 9 ......2 1,这样发现个规律,即任意一个格里,这个值都和上面那一个格及其前面9个格子共10格格子里的数值总和(有些会是空白格)。
那么如果是在excel上做的话,只有输入一个公式,整个表马上就可以完成了。
不过要注意公式要复制到其相应位数和值的最大数为止,比如5位数的,最多复制到9*5=45的位置。
完成这个表,就可以随意计算任意位数任意和的个数了。
8位数和40的,查表可得任意8位数和为40的有4303545个,但这个是包括首为零的数,那么只要把首位为零7位数和值是40的个数减掉即可。所以最后的4303545-286860=4016685.
温馨提示:答案为网友推荐,仅供参考