题目描述
【题目描述】
求10000以内n的阶乘。
【输入】
只有一行输入,整数n(0≤n≤10000)。
【输出】
一行,即n!的值。
样例
【输入样例】
4
【输出样例】
24
这道题跟阶乘和差不多,不过不用计数器和for循环(主函数里)了,详情请见
https://www.acwing.com/solution/content/79043/
C++ 代码
#include <iostream>
using namespace std;
const int LEN = 100005;
void print(int a[]) {
int i;
for (i = LEN - 1; i >= 1; i--)
if (a[i] != 0)
break;
for (; i >= 0; i--)
cout << a[i];
}
void fac(int n, int a[]) {
int len = 0;
for (int i = 2; i <= n; i ++) {
int x = 0;
for (int j = 0; j <= len; j++) {
int tmp = a[j] * i + x;
a[j] = tmp % 10;
x = tmp / 10;
}
while (x) {
a[++ len] = x % 10;
x /= 10;
}
}
}
int a[LEN] = {1};
int main() {
int n;
cin >> n;
fac(n, a);
print(a);
return 0;
}