zoukankan      html  css  js  c++  java
  • hdu 2068 RPG的错排

    http://acm.hdu.edu.cn/showproblem.php?pid=2068

    这是一道错排题,不过有点变形,要把所以的你n/2的情况直接相加就可以了

    #include <stdio.h>

    #include <string.h>

    #include <stdlib.h>

    #include <math.h>

    __int64 mm(int x,int y)

    {

            __int64 sum=1;

            for(int i=x;i>=x-y+1;--i)

            sum*=i;

            for(int j=y;j>=2;--j)

            sum/=j;

            return sum;

    }

    int main()

    {

        __int64 a[26],max;

        int n;

        a[1]=0;a[2]=1;

        for(int i=3;i<=25;++i)

        a[i]=(i-1)*(a[i-1]+a[i-2]);

        while(scanf("%d",&n),n)

        {

               max=0;

               for(int i=2;i<=n/2;++i)

               max+=mm(n,i)*a[i];//小于n/2的人的错排的和,即为所求

               if(n==1||n==2) printf("1\n");

               else

               printf("%I64d\n",max+1);/*为啥+1呢?原来是错排公式的f[0]=1*/

        }

        return 0;

    }

  • 相关阅读:
    qsort
    strcmp
    LotteryDrawing
    retire or not retire ? is a question.
    alloc && afree
    strlen
    c point
    c point ccccc
    MySQL MGR源码分析2
    MySQL MGR实现分析
  • 原文地址:https://www.cnblogs.com/yuelingzhi/p/2135489.html
Copyright © 2011-2022 走看看