Search This Blog

Sunday, May 11, 2014

Algorithms - Discrete Mathematics - K Candy Store

K Candy Store

The following is the solution to Hacker Rank problem K Candy Store using Java.  For solutions to other Hacker Rank Problem visit my page HackerRank, alternatively try searching for the problem in my blog.

Score: 5/5

/**
 *
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.StringTokenizer;

/**
 * @author Arun.G
 *
 */
public class Solution {

       BufferedReader reader;
       StringTokenizer tokenizer;
       PrintWriter out;

       public BigInteger factorial(BigInteger  n)
       {
              if(n.compareTo(BigInteger.ONE)==0 
                         || n.compareTo(BigInteger.ZERO)==0)
                     return BigInteger.ONE;
              else
                     return (n.multiply(
                        factorial(n.subtract(BigInteger.ONE))
                        ));
       }
       public void solve() throws IOException {
              int T = nextInt();
              for (int count = 0; count < T; count++) {
                     int N = nextInt();
                     int K = nextInt();
                     BigInteger nCk = BigInteger.ONE;
                     nCk = factorial(new BigInteger((N+K-1)+"")).divide(factorial(new BigInteger(K+"")).multiply(factorial( BigInteger.valueOf(N-1))));
                    
                    if(nCk.toString().length()>9)
                     {
                      System.out.println(new BigInteger(nCk.toString().substring(nCk.toString().length()-9,nCk.toString().length())));
                     }
                     else
                     {
                     System.out.println(nCk);
                     }
                    
              }
       }

       /**
        * @param args
        */
       public static void main(String[] args) {
              new KCandyStore().run();
       }

       public void run() {
              try {
                     reader = new BufferedReader(
                        new InputStreamReader(System.in));
                     tokenizer = null;
                     out = new PrintWriter(System.out);
                     solve();
                     reader.close();
                     out.close();
              } catch (Exception e) {
                     e.printStackTrace();
                     System.exit(1);
              }
       }

       int nextInt() throws IOException {
              return Integer.parseInt(nextToken());
       }

       long nextLong() throws IOException {
              return Long.parseLong(nextToken());
       }

       double nextDouble() throws IOException {
              return Double.parseDouble(nextToken());
       }

       String nextToken() throws IOException {
              while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                     tokenizer = new StringTokenizer(reader.readLine());
              }
              return tokenizer.nextToken();
       }
}

No comments:

Post a Comment

Labels