The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

组合数学作业题测试程序

原题为:

对于第二问,经过演算得到答案为pow(e,-1/k),下面用程序验证一下(k=1)的情况,n从1到20
#include<iostream>
using namespace std;

#define e 2.718281828459 
double g(double k)
{

    
return pow(e,-1.0/k);
}


#define bint __int64

bint f(bint n)
{
    
if(n==1||n==0return 1;

    
else return n*f(n-1);
}


bint Com(bint n,bint k)
{
    
return f(n)/f(n-k)/f(k);
}

bint process(bint n,bint k)
{
    bint ans 
= f(n);
    
for(int i=1;i<=n/k;i++)
    
{
        bint tem 
= 1;
        
for(int j=1;j<=i;j++)
            tem 
*= Com(n-k*j+k,k)*f(k-1);
        tem 
*= f(n-i*k);
        tem 
/= f(i);
        
if(i&1)ans -= tem;
        
else ans += tem;
    }

    
return ans;
}


int main()
{
    bint n,k;
    

    
for(int i=1;i<=20;i++)
    
{
        
//printf("fk(n)为:%.20lf\n",(double)process(n,k));
        printf("当n=%02d时,fk(n)/n!为:%.20lf\n",i,(double)process(i,1)/f(i));

    }

    printf(
"pow(e,-1/k)为:      %.20lf\n",g(1));


    
return 0;
}
测试结果如下图:

可见当k=1,n从1-20变化时,fk(n)/n!逼近pow(e,-1/k);

posted on 2011-10-07 19:46 abilitytao 阅读(1452) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理