Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions factorial_of_long_numbers.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// Find factorial of large numbers
// 100 factorial has 153 more
// so, it cant be fit into long long data type also
// so, we use application of arrays
#include<iostream>
#include<vector>
using namespace std;

// this function will multiply the x with the previously stored arr values and update the arr

int multiplyWith(vector<int> &arr,int arr_size,int x)
{
int carry = 0;

for(int i=0 ; i<arr_size ; ++i)
{
int product = arr[i]*x + carry ;
arr[i] = product%10;
carry = product/10;
}
while(carry)
{
arr[arr_size] = carry%10;
arr_size++;
carry = carry/10;
}
return arr_size;
}

void findFact(int n)
{
// factorial will be stored in this array
vector<int> arr(200);
arr[0] = 1; // intializing
int arr_size = 1; // array size will be in this variable

for(int i=2 ; i<=n ; ++i)
{
// this function will multiply 'i' values and store in the array
arr_size = multiplyWith(arr,arr_size,i);
}

// now we will print the array content from reverse side
for(int i=arr_size-1 ; i>=0 ; --i)
{
cout<<arr[i];
}
cout<<endl;
}

int main()
{
int x;
cout<<"Enter a number: "<<endl;
cin>>x;
findFact(x);
return 0;
}