[C++] 纯文本查看 复制代码
#include <stdio.h>
#define FC 100 /*100的阶乘*/
static int a[FC * 3]; /*数组用来存储结果*/
int main()
{
int i, j;
int len = 1; /*每次运算时对结果长度的跟踪*/
int temp, carry; /*temp为每位相乘时的结果;carry为每位相乘时的进位*/
a[1] = 1;
for (i = 2; i <= FC; i++) { /*总阶乘长度循环*/
carry = 0;
for (j = 1; j <= len; j++) { /*每次阶乘结果处理*/
temp = a[j]*i + carry; /*每位算得的结果加上上次运算的进位*/
a[j] = temp % 10;
carry = temp / 10; /*求进位*/
if (j == len && carry !=0) /*最高位算得的结果如果有进位则本次阶乘结果的长度则增加1位*/
len++;
}
}
for (i = len; i >=1; i--)
printf ("%d", a);
printf ("\n");
return 0;
}