[语言月赛202305] 计算阶乘
题目背景
相信你已经知道阶乘的定义:
n ! = n × ( n − 1 ) × ( n − 2 ) × … 1 n! = n \times (n - 1) \times (n - 2) \times \dots 1 n!=n×(n−1)×(n−2)×…1
现在,我们给出双阶乘的定义:
当
n
n
n 为奇数时,
n
!
!
=
n
×
(
n
−
2
)
×
(
n
−
4
)
×
⋯
×
1
n!! = n \times (n - 2) \times (n - 4) \times \dots \times 1
n!!=n×(n−2)×(n−4)×⋯×1
当 n n n 为偶数时,
n ! ! = n × ( n − 2 ) × ( n − 4 ) × ⋯ × 2 n!! = n \times (n - 2) \times (n - 4) \times \dots \times 2 n!!=n×(n−2)×(n−4)×⋯×2
特别的, 0 ! ! = 1 0!! = 1 0!!=1。
例如, 5 ! ! = 5 × 3 × 1 = 15 5!! = 5 \times 3 \times 1 = 15 5!!=5×3×1=15, 6 ! ! = 6 × 4 × 2 = 48 6!! = 6 \times 4 \times 2 = 48 6!!=6×4×2=48。
题目描述
给定整数 n n n,请你求出 2 × n ! n ! ! 2 \times \dfrac{n!}{n!!} 2×n!!n! 的值。
输入格式
本题单测试点内有多组测试数据。
输入的第一行是一个整数,表示数据组数 T T T。接下来依次给出每组数据的输入信息。
对每组数据,输入只有一行一个整数表示给定的 n n n。
输出格式
对每组数据,输出一行一个整数表示 2 × n ! n ! ! 2 \times \dfrac{n!}{n!!} 2×n!!n! 的值。
样例 #1
样例输入 #1
1
2
样例输出 #1
2
样例 #2
样例输入 #2
1
3
样例输出 #2
4
提示说明
数据规模与约定
- 对 20 % 20\% 20% 的数据, n ≤ 2 n \leq 2 n≤2。
- 对 60 % 60\% 60% 的数据, n ≤ 9 n \leq 9 n≤9。
- 对 100 % 100\% 100% 的数据, 0 ≤ n ≤ 34 0 \leq n \leq 34 0≤n≤34, 1 ≤ T ≤ 35 1 \leq T \leq 35 1≤T≤35。
提示说明
2 × 34 ! 34 ! ! < 2 64 2 \times \dfrac {34!}{34!!} < 2^{64} 2×34!!34!<264。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll N = 1e5+10;
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
unsigned long long nums=2;
for(int i=n-1;i>1;i-=2)
nums=nums*i;
cout<<nums<<endl;
}
return 0;
}