写个模拟阶乘的模板,最近也没啥时间写题哎。(一个很大的数求阶乘是会爆掉的,long long 也不得行,数组模拟yyds)
int a[20000000];
void factorial(int n) {
int rem, len, add; // rem每步计算的得数 len每次得数的位数 进位数
len = a[0] = 1; //初始化第一个数1 数位为1
for (int i = 2; i <= n; i++) {
add = 0;
for (int j = 0; j < len; j++) {
rem = a[j] * i + add;
a[j] = rem % 10;
add = rem / 10;
}
//有时候进位不止一位,需要处理进位至到0
while (add) {
a[len] = add % 10;
add= add / 10;
len++;
}
}
//输出!!!
for (int i = len - 1; i >= 0; i--)
printf("%d", a[i]);
printf("\n");
}
//PS:我是菜鸡