can you plz tell me how to compute large factor deal with large outputs by storing in array or anything else idk…
Dealing with big integer outputs
hello @Ashu1318
we can not store very big facorial inside any primitive dataype.
thats why we will use array to compute and store large factorial.
here is the logic->
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.
How to multiply a number ‘x’ with the number stored in res[]?
The idea is to use simple school mathematics. We one by one multiply x with every digit of res[]. The important point to note here is digits are multiplied from rightmost digit to leftmost digit. If we store digits in same order in res[], then it becomes difficult to update res[] without extra space. That is why res[] is maintained in reverse way, i.e., digits from right to left are stored.
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.
did’nt understand properly