CF285D Permutation Sum

题目描述

排列 $p$ 是一组有序的整数 $p_{1},p_{2},...,p_{n}$,包含 $n$ 个互不相同的正整数,并且每个整数都不超过 $n$。我们用 $p_{i}$ 表示排列 $p$ 的第 $i$ 个元素。我们称排列 $p_{1},p_{2},...,p_{n}$ 的长度为 $n$。 Petya 决定在长度为 $n$ 的排列集合上定义一种“和”操作。假设有两个长度为 $n$ 的排列:$a_{1},a_{2},...,a_{n}$ 和 $b_{1},b_{2},...,b_{n}$。Petya 定义这两个排列的“和”为长度为 $n$ 的排列 $c$,其中 $c_{i}=((a_{i}-1+b_{i}-1)\mod n)+1$,$(1\leq i\leq n)$。 操作 $\mod$ 表示 $x$ 除以 $y$ 后的余数。 显然,并不是所有排列 $a$ 和 $b$ 都能使得存在排列 $c$ 满足上面的和定义。因此,Petya 感到很沮丧,并请你做如下事情:给定 $n$,求有多少对长度为 $n$ 的排列 $a$ 和 $b$,满足存在排列 $c$,使得 $c$ 是 $a$ 和 $b$ 的“和”。 对于两个排列 $x$ 和 $y$,$(x\neq y)$,排列对 $(x,y)$ 和 $(y,x)$ 被认为是不同的对。 由于答案可能很大,请输出答案对 $1000000007$($10^{9}+7$)取模后的结果。

输入格式

一行一个整数 $n\ (1\leq n\leq 16)$。

输出格式

输出一个非负整数,表示满足条件的排列对 $(a,b)$ 的个数,对 $1000000007$ 取模。

说明/提示

由 ChatGPT 5 翻译