HDOJ 1465 不容易系列之一 [全错排问题]

题目简单可描述为:

n份信,没有一份装在自己对应的信封里,求总共有多少种排法?

例如:n=3;

2 3 1

3 1 2

共有两种排法。

 

提示:欧拉全错排公式的简单应用,f(n)=n![1/2!-1/3!+1/4!+...+(-1)^n*1/n!]   (n>1)

 

AC代码如下:

编译环境:netbeans6.7(G++)

#include using namespace std; long long fact(int x) { long long s=1; for(int i=2;i<=x;++i) { s=s*i; } return s; } int main() { int n,flag; long long sum; while(cin>>n) { sum=0,flag=1; for(int i=2;i<=n;++i) { if(i%2==0) flag=1; else flag=-1; sum+=flag*fact(n)/fact(i); } cout<

你可能感兴趣的:(ACM)