Guest User

Untitled

a guest
May 12th, 2017
62
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.math.BigInteger;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.List;
  7. import java.util.Scanner;
  8.  
  9. public class Main {
  10.    
  11.     public static BigInteger[] compute(int max){
  12.         BigInteger[] nFact = new BigInteger[max];
  13.         //First value is 1! = 1.
  14.         nFact[0] = new BigInteger("1");
  15.         for (int i = 1; i < max; i++) {
  16.             nFact[i] = nFact[i-1].multiply(new BigInteger(i+1+""));
  17.         }
  18.         return nFact;
  19.     }
  20.    
  21.     public static void main(String[] args) throws IOException {
  22.         //Initiazing I/O
  23.         Scanner sc = new Scanner(System.in);
  24.         PrintWriter stdout = new PrintWriter(System.out);
  25.         //Getting number of inputs
  26.         int n = sc.nextInt();
  27.         List<Integer> values = new ArrayList<Integer>();
  28.         //Store all the inputs in the list "values"
  29.         for (int i = 0; i < n; i++) values.add(sc.nextInt());
  30.         //Get the largest input using the max method from the Collections class.
  31.         int max = Collections.max(values);
  32.         //Call the compute method to get max! and store all steps in an array.
  33.         BigInteger[] nFact = compute(max);
  34.         //At that point we should have an array of that for; [1!, 2!, 3!, ..., (max-1)!, max!]
  35.         //For example if we assume max = 100, and we want to get 74!, we should just access the array at the position (74-1)=73.
  36.         for (int i = 0; i < n; i++) {
  37.             //For each input, we retrieve its value from the list "values" and then get its factorial from the "nFact" array.
  38.             stdout.println(nFact[values.get(i)-1]);
  39.         }
  40.         sc.close();
  41.         stdout.flush();
  42.         stdout.close();
  43.     }
  44. }
RAW Paste Data