text:  used.
  JAVA Code-
  This code uses BigIntegers.
  import java.io.*; import java.math.BigInteger; public class Main { public static void main(String[] args) throws IOException { String n; BufferedReader d= new BufferedReader(new InputStreamReader(System.in)); n=d.readLine(); int y=Integer.parseInt(n); BigInteger x=new BigInteger(n); //converting string to biginteger for(int j=y-1;j>=1;j--) { String str= Integer.toString(j); x=x.multiply(new BigInteger(str)); } System.out.println(x); } }
  Length of the factorial-
  The number of digits in N! is approximately:-
  [(log(2*pie*n)/2)+n*(log(n)-1))/log(10)]+1;
  Stirling’s approximation-
  N! is approximately equal to {sqrt(2*pie*n)}*{(n/e)^n}.
  To find the power of a prime factor of N! –
  Let the prime factor be X.Then,the power of X will be :-
  [N/X]+[N/(X^2)]+[N/(X^3)]+….. where [.] denotes the greatest integer function.
  For example-
  Power of 2 in 5! will be-
  [5/2]+[5/4]+[5/8]+[5/16]+…..
  => 2+1+0+0+….
  which is equal to 3.
  Also,5!=2^3 * 3^1 * 5^1
  To find the number of zeroes at the end of N!-
  Find the power of 2 and 5 in N!(Since,10=5*2).
  Let it be ‘v’ and ‘s’ respectively.
  if(v<=s),then number of zeroes at the end is 'v',else,'s'.
  Code-
  //initialization s=0; v=0; p=N; //copying value of N to another variable //Finding power of 5 while(N>0) { q=N/5; s=s+q; N=q; } //Finding power of 2 while(p>0) { w=p/2; v=v+w; p=w; } if(v>=s) printf("%d\n",s); else printf("%d\n",v); }
  Last Non-zero digit of the factorial-
  Lets say D(N) denotes the last non zero digit of factorial, then the algo says:-
  If tens digit of N is odd,D(N)=4*D[N/5]*D(Unit digit of N)
  If tens digit of N is even,D(N)=6*D[N/5]*D(Unit digit of N)
  where [N/5] is greatest Integer Function.
  Example-
  D(26)=6*D[26/5]*D(6)=6*D(5)*D(6)=6*2*2=4
  [D(5) means last non zero digit of 5!=120 which is 2, same for D(6)]