大数阶乘

#include <stdio.h>

void PrintFact(int n)
{
    int result[1000] = {1}, len = 1;
    for (int i = 2, carry = 0; i <= n; ++i)
    {
        for (int j = 0, t; j < len; carry = t / 10, ++j)
            result[j] = (t = result[j] * i + carry) % 10;
        for (; carry; carry /= 10)
            result[len++] = carry % 10;
    }
    while (len--)
        printf("%d", result[len]);
}
int main()
{
    int n;
    scanf("%d", &n);
    PrintFact(n);
    return 0;
}