#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,t,n,f;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
f=1;
for(j=1;j<=n;j++)
{
f=f*j;
}
printf("%d\n",f);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,t,n,f;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
f=1;
for(j=1;j<=n;j++)
{
f=f*j;
}
printf("%d\n",f);
}
return 0;
}
Plz see the constraints carefully
can u please let me know the changes in the program?
hey @avrupa
About constraints:
Input An integer t, 1<=t<=100, denoting the number of testcases, followed by t lines, each containing a single integer n, 1<=n<=100.
So that mean your code should be able to calculate maximum of 100 factorial and factorial of 100 is
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L
which cannot be stored in integer or floating point datatypes in c or c++, So you have to use array to store the number.
Now ho to do that ?
For this problem check this link: discuss.codechef.com/questions/7349/computing-factorials-of-a-huge-number-in-cc-a-tutorial
Hope you understood…!
Well! The int data type can store a no. of 10^9 magnitude
And do you think 100! Can fit inside that
Try thinking different
you cant store 100 factorial in any primitive data type in C and C++ .
thanx! that helped.
Simplest way is to think about how you can create a program to multiply two numbers i.e. 22 x 44 = 968
and save the value in a character array.
22
x44 = multiply right ‘2’ of 22 with 44,calculate the 88%10 feed in array and in small classes there was a term called ‘carry’ while solving multiplication and that carry here is 88/10. (initially carry = 0 ). Then multiply left '2 with 44, add carry, calculate %10 and rest of the things as above
For more help refer to the editorials or comment here.
most welcome…