#include
using namespace std;
int main() {
long long int n;
cin>>n;
long long int s=1;
for(long long int i=2;i<=n;i++)
{
s=s*i;
}
cout<<s;
return 0;
}
Broken calculator why is the factorial not being calculated for large numbers
@jaankita2000 You have to find the factorial of very large numbers. You can’t store the factorials of 100, 200 (as any datatype like int or say long long int cannot store such large number)… for that you can use array which can store upto 10^6 size. Idea is to spilt the number into digits and to store each digit in the array and then perform actions digit wise. Try to find a logic.
hi ankita
Your code overflows when it multiplies large numbers together as it exceeds the storage capacity of integers.
It is not possible to store these many digits even if we use long long int. You need to do another approach.
You need to do following:
factorial(n)
- Create an array ‘res[]’ of MAX size where MAX is number of maximum digits in output.
- Initialize value stored in ‘res[]’ as 1 and initialize ‘res_size’ (size of ‘res[]’) as 1.
- Do following for all numbers from x = 2 to n.
……a) Multiply x with res[] and update res[] and res_size to store the multiplication result.
multiply(res[], x)
- Initialize carry as 0.
- Do following for i = 0 to res_size – 1
….a) Find value of res[i] * x + carry. Let this value be prod.
….b) Update res[i] by storing last digit of prod in it.
….c) Update carry by storing remaining digits in carry. - Put all digits of carry in res[] and increase res_size by number of digits in carry.
Example to show working of multiply(res[], x)
A number 5189 is stored in res[] as following.
res[] = {9, 8, 1, 5}
x = 10
Initialize carry = 0;
i = 0, prod = res[0]x + carry = 910 + 0 = 90.
res[0] = 0, carry = 9
i = 1, prod = res[1]x + carry = 810 + 9 = 89
res[1] = 9, carry = 8
i = 2, prod = res[2]x + carry = 110 + 8 = 18
res[2] = 8, carry = 1
i = 3, prod = res[3]x + carry = 510 + 1 = 51
res[3] = 1, carry = 5
res[4] = carry = 5
res[] = {0, 9, 8, 1, 5}
Hope it helps 
I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.
On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.