It is a totally different approach, we are just playing with double.

As we know double has very large value 4.9e-324 to 1.8e+308.

Then we convert the double into an integer array.

As we know double has very large value 4.9e-324 to 1.8e+308.

Then we convert the double into an integer array.

__Screenshot:__

OUTPUT |

__The Code:__

#include<iostream>

#include<stdlib.h>

#include<math.h>

using namespace std;

/*Classic factorial function to find the factorial of a number using recursion method*/

double factorial(int n)

{

if(n==1)

return 1;

else

return (factorial(n-1)*n);

}

int main()

{

int n;

cout<<"factorial of: ";

cin>>n;

double r = factorial(n);

double s = r;

int i=0;

/*to find the number of digits of the answer*/

for(i=0; r>=1; i++)

{

r /= 10;

}

cout<<"number of digits: "<<i<<endl;

/*creating and dynamically allocated array*/

int *a = new int[370];

double t,u;

int k;

int l=0;

/*type casting digit by digit of the answer and

symultaneously storing into the array*/

for(int j=i-1; j>0; j--)

{

t = s/pow(10,j);

k = (double) t;

a[l] = k;

s = s-k*pow(10,j);

l++;

}

/*Print the array*/

cout<<"Answer: ";

for(int m=0; m<i; m++)

{

cout<<a[m];

}

cout<<endl;

return 0;

}

This is an approximated program, boundary condition is 1-170.

Developer, Tinkere, a proud Dad.. love to spend my available time playing with Tech!!

*Set your Author Custom HTML Tab Content on your Profile page*