描述
求10000以内n的阶乘。
格式
输入格式
只有一行输入,整数n(0≤n≤10000)。
输出格式
一行,即n!的值。
样例
输入样例
4
输出样例
24
限制
扫描二维码关注公众号,回复:
10206267 查看本文章
时间限制: 10000 ms
内存限制: 65536 KB
思路:模拟高精度乘法运算,用数组来进行存储
注意:时间和内存
#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;
int main ()
{
int n, ans[80005], tmp=0, index;
memset(ans, 0, sizeof(ans));
ans[0] = 1;
scanf ("%d", &n);
for (int j=1; j<=n; j++) {
tmp = 0; //刷新
for (int i=0; i<80005; i++) { //模拟乘法运算
ans[i] = ans[i]*j + tmp; //
tmp = ans[i] /10; //tmp为进位
ans[i] = ans[i] % 10; //
}
}
for (int i=80004; i>=0; i--) {
if (ans[i]) {
index = i;
break;
}
}
for (int i=index; i>=0; i--) {
printf ("%d", ans[i]);
}
return 0;
}