基础母函数的变形(非空)

基础母函数的变形(非空)

n个完全一样的球放到m个有标志的盒子中,不允许有空盒,问有多少种不同的方案?

f(x)=(x+x^2+...)^m  这个是形式,目前我们要推导出对于特定的m,n,用数学的方法算出和用程序解答出来是一样的。

Go

f(x)=x^m/(1-x)^m=x^m*(1-x)^(-m)

 

这样对于特殊的n,要求的就是(1-x)^(-m)中的x的n-m系数,根据公式有:

result=C(n-m+  m-1,n-m)=C(n-1, n-m)

 

 

 

下面写程序来证明:

(setq  m   5)

 

(defun pow (num count)

(if (or (> count 1) (eq  count  1) )

      (* num 

         (pow num 

              (- count 1) ) )

      1))

 

(defun slayer ( count)

(if (or (> count 1) (eq  count  1) )

      (* count 

         (slayer  

              (- count 1) ) )

      1))

 

(defun slayerex (num count)

(if (or (> count 1) (eq  count  1) )

      (* num 

         (slayerex 

              (-  num  1) 

              (- count 1) ) )

      1))

 

 

(defun  exprhelp (n  m  )

(if  (or (>  n  m) 

         (eq  n  m) )  

        (+  (expr (- n 1) 

                  (- m  1) )

            (exprhelp  (-  n    1)

                       m))

        0))

 

//下面的条件判断改了点.不允许不拿了

(defun  expr (n m)

(if  (<  n  m)          

          0

(if (and (eq  m  0) 

         (eq  n  m) )

        1   

     (if (eq  m  0)

         0

         (exprhelp  n 

                    m)))))   

 

(defun  formula  (n m)

(if  (>   n  m)

     (/   (slayerex  (- n   1)

                     (-  n  m))

          (slayer    (-  n  m)))

        0))

 

 

(defun  test (n)

(if (> n 0)

  (progn 

       (print (expr n m ))

       (print  'compare)

       (print (formula n m ))      

       (test (- n 1)))

  (print 'over)))

 

(test  24)

注意这里n必须大于m,否则为结果为0,从下面结果中也能看到。

[93]> (test  24)

 

8855

COMPARE

8855

7315

COMPARE

7315

5985

COMPARE

5985

4845

COMPARE

4845

3876

COMPARE

3876

3060

COMPARE

3060

2380

COMPARE

2380

1820

COMPARE

1820

1365

COMPARE

1365

1001

COMPARE

1001

715

以上的逻辑判断的代码写得不好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值