hdu1465 参考答案

返回“大学生程序设计竞赛”

/*经典的错排公式*/
#include <stdio.h>

__int64 a[21];

void init(){
    a[1] = 0;
    a[2] = 1;
    a[3] = 2;
    int i;
    for(i=4; i< 21; i++){
        a[i] = (i-1) * (a[i-1] + a[i-2]);
    }
}

int main(){
    init();
    int n;
    while(scanf("%d", &n)!=EOF){
        printf("%I64d\n", a[n]);
    }

    return 0;
}