From 9346292b71f2407de2d0a2b18f0005f0e3b5c3a1 Mon Sep 17 00:00:00 2001 From: AAB007 <62844406+AAB007209@users.noreply.github.com> Date: Sun, 17 Oct 2021 18:07:59 +0530 Subject: [PATCH] Large_Factorial --- Large_Factorial.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Large_Factorial.cpp diff --git a/Large_Factorial.cpp b/Large_Factorial.cpp new file mode 100644 index 0000000..b5cabdc --- /dev/null +++ b/Large_Factorial.cpp @@ -0,0 +1,56 @@ +#include + +using namespace std; + +#define MAX 1000 + +int multiply(int x, int res[], int res_size); + +void factorial(int x) +{ + int res[MAX], res_size; + res[0] = 1; + res_size = 1; + + for (int i = 2; i <= x; i++) + { + res_size = multiply(i, res, res_size); + } + + for (int j = res_size - 1; j >= 0; j--) + { + cout << res[j]; + } + cout << "\n"; +} + +int multiply(int x, int res[], int res_size) +{ + int carry = 0, prod; + + for (int i = 0; i < res_size; i++) + { + prod = res[i] * x + carry; + res[i] = prod % 10; + carry = prod / 10; + } + + while (carry) + { + res[res_size++] = carry % 10; + carry = carry / 10; + } + return res_size; +} + +int main() +{ + int a; + printf("Enter the number: "); + scanf("%d", &a); + + printf("The Factorial of %d is: ", a); + factorial(a); + + return 0; +}