输入一个整数
代表排列的长度。
输出一个整数,代表长度为
的双生排列数量对
取模的答案。
3
2
在这个样例中,长度为
的排列有:
![]()
且为双生排列;
![]()
;
![]()
;
![]()
;
![]()
;
![]()
且为双生排列。
#排列组合问题,奇偶分开排列 #N为奇数,奇数只能放在前面,所以直接奇数的排列乘以偶数的排列就是答案 #N为偶数时,奇偶都可以放在前面,所以答案等于上面的情况乘以2 #这里取模比较麻烦不能自己写阶乘函数了,用math库里的函数直接输出阶乘取模 #乘法的取模算法可以去网上搜一下 import math n = int(input()) #计算奇偶数的数量 if n%2 == 0: qishu_c = n//2 oushu_c = n//2 else: qishu_c = n//2 + 1 oushu_c = n//2 #这里答案应该是n为奇数时,阶乘一(qishu_c)乘上阶乘二 (oushu_c);N为偶数时,乘二就可以了 #这里答案过于大,进行乘法的取模操作 M = 10**9+7 res1 = math.factorial(qishu_c)%M res2 = math.factorial(oushu_c)%M if n % 2 == 0: res = res1 * res2 % M print((res*2)%M) else: res = res1 * res2 % M print(res)