Big Factorial

Lab C Advanced 30 points

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
Sample input available Sample output available
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;
}
Output
Answer
HOME LEARN COMMUNITY DASHBOARD