zoukankan      html  css  js  c++  java
  • HDOJ 2948 错排公式

    将第 n 个数放在 第 k 个位置上,共 n-1 种;

    如果第 k 个数放在第 n  个位置,共有 f[n-2] 种,否则由于第 k 个数不能放在第 n 个位置,剩余的数相当于 n-1 个数时的子问题,即f[n-1];

    # include <stdio.h>
    
    long long int f[21], fact[21];
    
    void prepare(void)
    {
        int i;
        
        fact[1] = 1;
        for (i = 2; i <= 20; ++i)
            fact[i] = i * fact[i-1];
        
        f[1] = 0;
        f[2] = 1;
        for (i = 3; i <= 20; ++i)
            f[i] = (i-1) * (f[i-1]+f[i-2]);
    }
    
    int main()
    {
        int T, n;
        
        prepare();
        scanf("%d", &T);
        while (T--)
        {
            scanf("%d", &n);
            printf("%.2lf%%\n", f[n]/fact[n]*100.0); 
        }    
        
        return 0;
    }

    //

  • 相关阅读:
    暑假日报-11
    暑假日报-10
    暑假日报-9
    暑假日报-8
    暑假日报-7
    暑假日报-6
    暑假日报-5
    暑假日报-4
    暑假日报-3
    第二次集训的每日感想
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2580592.html
Copyright © 2011-2022 走看看