#include<stdio.h>
int main()
{
int result[40000];//保存计算结果的数组
int height = 1;//当前的结果是几位数,默认一开始为一位数
int num;//要计算的阶乘
scanf("%d", &num);
result[0] = 1;
for (int i = 1; i <= num; i++)
{
int res = 0;//进位
for (int j = 0; j < height; j++)
{
int temp = result[j] * i + res;
result[j] = temp % 10;
res =temp / 10;
}
while (res)
{
result[height++] = res % 10;
res /= 10;
}
}
for (int i = height - 1; i >= 0; i--)
{
printf("%d", result[i]);
}
return 0;
}
即使long long也不够,故想到用数组来存放结果的每一位
4!=24
5!=4!*5=24*5=20*5+4*5利用这个原理