图书馆

实验任务

为了击败邪恶的组织—–图书馆破坏者,ytaaa 作为间谍加入这个组织。但是这并不是人人都可以加入的,作为考验,组织分配了一个任务作为考核,那就是,把图书馆内书的顺序打乱,而且必须是没有一本书在其原本的位置。现在 ytaaa 很好奇一共有多少种方式将所有书放错。

数据输入

输入一行包括一个正整数 N(N<=20),表示书本数量。

数据输出

输出仅有一个数,将所有书放错的方案数。

输入示例

3

输出示例

2

解题思路

直接套错排的递推公式就好了(:з」∠),详见全错位排列
不过要注意数据大小,要用__int64才行

参考代码

#include <stdio.h>  
__int64 ans[25]={0,0,1}; //初值 
int main()  
{  
    int n,i;  
    for (i = 3;i <= 20;i++)  
        ans[i] = (i-1)*(ans[i-1]+ans[i-2]); //错排的递推公式 
    while (~scanf("%d",&n))  
        printf("%I64d\n",ans[n]);  
    return 0;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值