Big Factorial
Completed
Print n! exactly for n ≤ 50 by storing digits in an int array and multiplying digit by digit, like long multiplication.
Input
One integer 0–50.
Output
n! (all digits).
Example
Input
25
Output
15511210043330985984000000
Editor
C
Hints
Store the least significant digit first.
Multiply each digit, keeping a carry, like on paper.
Solution explanation
When numbers outgrow every built-in type, you can still compute with arrays of digits.
Show solution
#include <stdio.h>
int digits[100];
int main() {
int n, len = 1;
scanf("%d", &n);
digits[0] = 1;
for (int m = 2; m <= n; m++) {
int carry = 0;
for (int i = 0; i < len; i++) {
int v = digits[i] * m + carry;
digits[i] = v % 10;
carry = v / 10;
}
while (carry > 0) {
digits[len] = carry % 10;
carry /= 10;
len++;
}
}
for (int i = len - 1; i >= 0; i--) printf("%d", digits[i]);
printf("\n");
return 0;
}