HDOJ 2048 神、上帝以及老天爷

来源:互联网 发布:软件开发技术员招聘 编辑:程序博客网 时间:2024/06/07 01:23

http://acm.hdu.edu.cn/showproblem.php?pid=2048
错排:
首先,给人数编号1,2,3,。。。x。。。。,n-1,n
给名字编号1,2,3,。。。y。。。。,m-1,m
当x=1时{剩下(n-1)还需要排列},有两种情况:
(1),1与2配对,剩下n-2还需要错排,即a[n-2]
(2),1不与2配对,则剩下n-1需要错排,即a[n-1]
所以推理的公式:a[n]=(n-1)(a[n-1]+a[n-2])

import java.util.Scanner;public class Main {    public static void main(String[] args) {        long[] a=new long[25];        long[] b=new long[25];        a[1]=0;b[1]=1;        b[2]=2;        a[2]=1;        Scanner sc=new Scanner(System.in);        for(int i=3;i<21;i++){            a[i]=(i-1)*(a[i-1]+a[i-2]);            b[i]=i*b[i-1];        }        int n=sc.nextInt();        while(n-->0){            int m=sc.nextInt();            System.out.printf("%.2f",a[m]*1.0/b[m]*100);            System.out.println("%");        }    }}
0 0
原创粉丝点击