题意:大概是求n个非负整数相加等于m的解的个数,这题与nyoj上幸运99 的买水果的那题很相似。
如下图所示:
这其实很明显是一个数学问题,高中我们都学过排列组合,这题便是排列组合
排列组合的公式如下:
1.首先,我们很容易会想到,直接求n的阶乘去除以下面的阶乘,但是如果数值很大的话,这样很容易超时;所以我们应该优化一下,我们会想到高中学到的一个这这样的公式。
如下图所示:
如果a非常大,大于n/2时,我们就可以用b来代替他 (这上面图的意思);
所以说买水果就是简单的排列组合。
但是这题因为有非负整数这一个条件的限制,所以公式变成了
这个公式是高中老师教的隔板法的公式。可以找几组小数据模拟一下。
按照上面的提示,你是否很容易把这道题a出来了呢?
你可以经过一系列的推导,也可能有印象高中教了这样一个公式:
我写的比较丑哈哈哈哈哈。
同样利用这个式子也能轻松求出答案,因为给出了m,n,直接对应输出就可以。
写了第一篇博客,哇哈哈哈哈哈哈哈,我真厉害(狗头保命),嘿嘿