Storing large number

i am unable to solve this problem as there is no datatype for storing such a large number.

so what is the approach for this problem

@shivamgoel150
Calculating factorial is not a tough job, but storing a very big result of multiplication is a difficult task.
Is there any datatype available which stores these many digits at once?
No, there is no such data type available.

Then, what to use?
Array, is what you are looking for.
Array can solve your problem.

example:
Input :50
Output : 3041409320171337804361260816606476884-
4377641568960512000000000000

Algorithm to calculate factorial:

factorial()

  1. Create an array ‘res[]’ of MAX size where MAX is number of maximum digits in output.
  2. Initialize value stored in ‘res[]’ as 1 and initialize ‘res_size’ (size of ‘res[]’) as 1.
  3. Do following for all numbers from x = 2 to n.
    … Multiply x with res[] and update res[] and res_size to store the multiplication result.

easy?:wink:

Algorithm for multiplication:

multiply(res[], x)

  1. Initialize carry as 0.
  2. 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.
  3. Put all digits of carry in res[] and increase res_size by number of digits in carry.

Hope, this would help.
if yes dont forget to mark it as resolved :smiley: