HDOJ2068 RPG的错排

来源:互联网 发布:浪腾软件 编辑:程序博客网 时间:2024/05/22 00:21

HDACM2068
这是一道错排的题目理清思路并不难

import java.util.Scanner;//1 + 1个错排 +...+n/2个错排 public class Main{    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while (sc.hasNext()) {            int n = sc.nextInt();            if (n == 0) {                break;            }            long count = 1;            long a = 1;            long sum = 1;            for (int i = 1; i <=n/2 ; i++) {                count *= (n-i+1);                a *= i;                sum +=count/a*literal(i);            }            System.out.println(sum);        }    }    public static long literal(long n) {//计算n个错排的个数        long a = 0, b = 1;        long count = 0;        for (int i = 1; i <= n; i++) {            count = (i - 1) * (a + b);             a = b;             b = count;         }        return count;    }}