问题描述 :
给你一个整数N(0 ≤ N ≤ 10000),你的任务是计算并输出 N!
输入说明 :
输入多行,每行一个N。
输出说明 :
对于每个输入N,在一行中输出N!
行首与行尾为空格,两组输出之间无空行。
输入范例 :
2
1
100
输出范例 :
2
1
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
完整C++代码
大整数相乘问题,一定要使用数组,常规数值类型是不行的
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while (cin >> n) {
int res[10000] = {0};
res[0] = 1;
if (n == 0 || n == 1) cout << 1 << endl;
else if (n == 2) cout << 2 << endl;
else {
int len = 1, t, step = 0;
for (int i = 2; i <= n; i++) {
for (int j = 0; j < len; j++) {
t = res[j] * i + step;
res[j] = t % 10;
step = t / 10;
if (step != 0 && j == len - 1) len++;
}
}
for (int i = len - 1; i >= 0; i--) {
cout << res[i];
}
cout << endl;
}
}
return 0;
}
😋欢迎大伙私信或者评论区交流讨论😋