From 184137def0d6f303f8c98bd4ad136d7891cfee63 Mon Sep 17 00:00:00 2001
From: gulsherahmad <34216285+gulsherahmad@users.noreply.github.com>
Date: Thu, 31 Oct 2019 01:17:57 +0530
Subject: [PATCH] Program to get factorial of any integer.

It works well for integer greater than 20.
---
 .../Maths/factorial/FactorialBigIntegers.cpp  | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 Algorithms/Maths/factorial/FactorialBigIntegers.cpp

diff --git a/Algorithms/Maths/factorial/FactorialBigIntegers.cpp b/Algorithms/Maths/factorial/FactorialBigIntegers.cpp
new file mode 100644
index 00000000..444b54e8
--- /dev/null
+++ b/Algorithms/Maths/factorial/FactorialBigIntegers.cpp
@@ -0,0 +1,40 @@
+#include <bits/stdc++.h>
+#define MAX 500
+using namespace std;
+int multiply(int x, int res[], int res_size);
+void extraLongFactorials(int n) {
+    int res[MAX]; 
+    res[0] = 1; 
+    int res_size = 1;
+    for (int x=2; x<=n; x++) 
+        res_size = multiply(x, res, res_size);
+    for (int i=res_size-1; i>=0; i--) 
+        cout << res[i];
+}
+int multiply(int x, int res[], int res_size) 
+{ 
+    int carry = 0;
+    for (int i=0; i<res_size; i++) 
+    { 
+        int prod = res[i] * x + carry;  
+        res[i] = prod % 10; 
+        carry  = prod/10;     
+    } 
+    while (carry) 
+    { 
+        res[res_size] = carry%10; 
+        carry = carry/10; 
+        res_size++; 
+    } 
+    return res_size; 
+}
+int main()
+{
+    int n;
+    cout<<"Enter the number to get factorial";
+    cin >> n;
+    cin.ignore(numeric_limits<streamsize>::max(), '\n');
+    extraLongFactorials(n);
+    return 0;
+}
+