hdu 2048 神、上帝以及老天爷

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

这是一道错排的变式,其实用错排(n!*(1/2!-1/3!+…..+(-1)^n/n!)  )/全排(n!) 即是我们要求的百分率,如果要简单一点就可以直接用(1/2!-1/3!+…..+(-1)^n/n!),所以我们就可以很容易写出,还有精度问题,四舍五入,由于系统本身就是取的四舍五入,所以我们就可以不做处理了

代码:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

double a[21]; 

double cm(int n)

{

    double s=1; 

    for(double i=2;i<=n;++i)

    {

          s*=i;      

    }

    return s;

int main()

{

    int m,k;    

    a[1]=0;

    for(int i=2;i<=20;++i)

    {

                if(i%2)

                a[i]=a[i-1]-1/cm(i);

                else

                a[i]=a[i-1]+1/cm(i);

    }

    scanf("%d",&m);

    while(m--)

    {

           scanf("%d",&k);

           printf("%.2lf%%\n",a[k]*100);

    }

   // system("pause");

    return 0;

}

原文地址:https://www.cnblogs.com/yuelingzhi/p/2128798.html