How to Approach?

Please guide on how to approach the problem.

@Ak07 we cant store result in long long int so we will store digits of the resulted value in an array,
do the following:
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 carrying.

Put all digits of carry in res[ ] and increase res_size by number of digits in carry.

I don’t understand the logic behind this method, or is this something we just need to know and memorise?

@Ak07 here we are using basic multiplication technique which we studied in primary school.look at this code you will understand (https://ide.codingblocks.com/s/195158)

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.