首页 > 代码库 > 错排公式及其近似公式

错排公式及其近似公式

错排问题详解:

http://zh.wikipedia.org/wiki/装错信封问题

解决方法,不再赘述,这里给出错排公式及其近似公式的代码实现:

1.    技术分享

#include <iostream>using namespace std;int getjie(int a){    if(a==1)return 1;    if(a>1){        return a*getjie(a-1);    }    }int main(){    int n;    cin>>n;    double sum=0;    int da=getjie(n);    for(int i=2;i<=n;++i){        if(i%2==0){            sum+=da/getjie(i);        }        else{            sum-=da/getjie(i);        }    }    cout<<sum<<endl;} 

 

2. 技术分享

 

#include <iostream>#include <cmath>using namespace std;double getjie(int n){	if(n==1) return 1;	if(n>1) return n*getjie(n-1);}double gete(){	double out=1;	for(int i=1;i<100;++i){		out=out+1.0/getjie(i);	}	return out;}int main(){	int n;	cin>>n;	double out=getjie(n)*1.0/gete() +0.5;	cout<<floor(out);	}

这里自然对数的底数e的数值的计算,及数据较大时对阶层计算的优化,这两个问题需要改进,这里先挂起。

 

错排公式及其近似公式