欢迎访问==> 【考研OR保研】机试题
题目描述
输入一个正整数 $N$,输出 $N$ 的阶乘。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个整数 $N$。
输出格式
每组数据输出占一行,输出 $N$ 的阶乘。
数据范围
$1 \\le N \\le 1000$,
每个输入最多包含 $100$ 组数据
输入样例:
4
5
15
输出样例:
24
120
1307674368000
C++ 代码
#include <bits/stdc++.h>
using namespace std;
unordered_map<int, vector<int> > res;
//高精度乘法(模板)
vector<int> mul(vector<int> &A, int b)
{
vector<int> C;
int t = 0;
for(int i = 0; i < A.size(); i ++)
{
t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while(t) C.push_back(t % 10), t /= 10;
return C;
}
int main()
{
//预处理1~1000的阶乘
vector<int> t;
t.push_back(1);
res[1] = t;
for(int i = 2; i <= 1000; i ++) res[i] = mul(res[i - 1], i);
int n;
while(cin >> n)
{
vector<int> ans = res[n];
for(int i = ans.size() - 1; i >= 0; i --) cout << ans[i];
puts("");
}
return 0;
}