题面:
题目背景
我们经常容易犯些很弱的错误,例如把书放错书架,但是如果把所有的书都放错,那也是件不容易的事情,下面就是关于这样的问题
题目描述
小十四在整理书架的时候,有将n本书和n个书架。1号书应该放在1号书架,2号书应该放在2号书架,如此类推,但是全部都放错,也是够奇葩的,请问这种奇葩的情况有多少种。例如:两本书1和2号,分别放错只有一种情况,就是1号书放在2号书架,2号书放在1号书架,所以方案为1种。
输入格式
一个正整数n,表示书的本数或者书架的个数。
输出格式
一个整数,代表有多少种情况。
输入输出样例
输入 #1 复制
2
输出 #1 复制
1
说明/提示
数据范围: 50%的数据 n<=20 100%的数据 n<=50
by yszshs1 @ 2020-02-24 23:11:44
样例:输入2,输出1
by yszshs1 @ 2020-02-24 23:12:09
@[yszshs1](/user/72662) 不就是[这道题](https://www.luogu.com.cn/problem/P1595)吗?
by 樱雪喵 @ 2020-02-24 23:14:31
用错排公式啊
by 樱雪喵 @ 2020-02-24 23:14:51
@[慕蓉樱雪](/user/234074) 对啊,我就是用公式的,加了高精,不过有三个点RE
by yszshs1 @ 2020-02-24 23:20:25
@[慕蓉樱雪](/user/234074) 她用的是错排公式啊 就是加了高精度而已awa
by XeCtera @ 2020-02-24 23:20:37
大佬求救啊
by yszshs1 @ 2020-02-24 23:21:40
@[yszshs1](/user/72662)
```cpp
a[i][0]=s[0]+s1[0]+1;
int x=0,j,l;
for (j=1;j<=s[0];j++)
{
int x=0;
for (l=1;l<=s1[0];l++)
{
a[i][j+l-1]+=s[j]*s1[l]+x;
x=a[i][j+l-1]/10;
a[i][j+l-1]%=10;
}
a[i][j+s1[0]]=x;
// if (i==n) printf("x=%d ",x);
}
```
这个x重复定义了?
by XeCtera @ 2020-02-24 23:25:45
@[HoneyLemon](/user/38785) 重复定义会有什么问题吗
by yszshs1 @ 2020-02-25 09:47:51
@[yszshs1](/user/72662) 可能会导致最初定义的x值始终没被修改吧 可能会有风险
by XeCtera @ 2020-02-25 09:51:02