how to find factorial for numbers greater than 20?
the complexity of the code must be N
Use Array to Multiply,Store value as value of 21! exceeds range of data type(long long int) .
Use Basic Principle of multiplication .
See This link only after trying question yourself.
Factorials of N>20 can’t be stored even in a 64-bit long long variable.
Big integers must be used for such calculations.
Languages like Java, Python, Ruby etc. can handle big integers, but we need to write additional code in C/C++ to handle huge values.
This Image will help you understand the code
#include<iostream>
using namespace std;
int main()
{
int n,j,temp;
int arr[200];
arr[0]=1;
j=0;//for index of array arr
cout<<"Enter the number.:";
cin>>n;
for(;n>=2;n--)
{
temp=0;
for(int i=0;i<=j;i++)
{
temp=(arr[i]*n)+temp;
arr[i]=temp%10;
temp=temp/10;
}
while(temp>0)//for
{
arr[++j]=temp%10;
temp=temp/10;
}
}
for(int i=j;i>=0;i--)
printf("%d",arr[i]);
return 0;
}
1 Like
You have to use array to store big numbers .
This codechef tutorial will be very helpful
**Link : ** https://discuss.codechef.com/questions/7349/computing-factorials-of-a-huge-number-in-cc-a-tutorial