杭电1465题

//错排问题
//思路:错排公式:d[n]= (n-1)*( d[n-1] + d[n-2])
#include
#include
using namespace std;
int main()
{
 int n;
 while(cin>>n)
 {
  //注意使用__int64,否则会溢出
  __int64 a=0,b=1;
  __int64 result;
  if(n == 1)
  {
   cout<<0<  }
  else if(n == 2)
   cout<<1<  else
  {
   for(int i=3;i   {
    result = (i-1)*(a+b);
    a = b;
    b = result;
   }
   //cout<   printf("%I64d\n",result);
  }
 }
 return 0;
}

转载于:https://www.cnblogs.com/north_dragon/archive/2010/04/25/1720715.html

你可能感兴趣的:(杭电1465题)