问题描述
用高精度方法,求N!的精确值(N以一般整数输入)。
输入格式
N
输出格式
N!
样例
输入
10
输出
3628800
解决方案
思路
高精度运算
代码
#include <iostream>
using namespace std;
int sum[50000] = {1};
int main() {
int n;
cin >> n;
for (long long i = 1; i <= n; ++i) {
for (int j = 49999; j >= 0; --j) {
if (sum[j] == 0)
continue;
int temp = sum[j] * i;
sum[j] = temp % 10;
sum[j + 1] += temp / 10;
}
//整理进位
for (int j = 0; j < 50000; ++j) {
int temp = sum[j];
sum[j] = temp % 10;
sum[j + 1] += temp / 10;
}
}
int index = 49999;
for (; index >= 0; --index) {
if (sum[index] != 0)
break;
}
for (; index >= 0; --index) {
cout << sum[index];
}
return 0;
}