码迷,mamicode.com
首页 > 其他好文 > 详细

错排公式及其近似公式

时间:2015-01-29 20:57:48      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

错排问题详解:

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的数值的计算,及数据较大时对阶层计算的优化,这两个问题需要改进,这里先挂起。

 

错排公式及其近似公式

标签:

原文地址:http://www.cnblogs.com/liugl7/p/4260800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!