Advertisement
add1ctus

Расипувач на забава 3

Nov 27th, 2015
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.62 KB | None | 0 0
  1. import java.math.BigInteger;
  2. import java.util.Scanner;
  3.  
  4. public class VISChallenge {
  5.     private static BigInteger[][] DP;
  6.     private static int N;
  7.     private static int K;
  8.     private static BigInteger[] dijagonali;
  9.    
  10.     private static BigInteger f(int x, int y)
  11.     {
  12.         if(DP[x][y] != null)
  13.             return DP[x][y];
  14.         if(x + y == K)
  15.             DP[x][y] = new BigInteger("0");
  16.         else if(x == y)
  17.             DP[x][y] = f(x+1,y).multiply(new BigInteger("2")).add(dijagonali[x+y]);
  18.         else if(y == K-N)
  19.             DP[x][y] = f(x+1,y).multiply(new BigInteger("2"));
  20.         else if(x == N-1)
  21.             DP[x][y] = f(x,y+1).multiply(new BigInteger("2"));
  22.         else
  23.             DP[x][y] = f(x+1,y).add(f(x,y+1)).add(dijagonali[x+y]);
  24.         return DP[x][y];
  25.     }
  26.    
  27.     public static void main(String[] args) {
  28.         Scanner in = new Scanner(System.in);
  29.          
  30.         N = in.nextInt();
  31.         K = in.nextInt();
  32.         DP = new BigInteger[N+1][K-N+1];
  33.         dijagonali = new BigInteger[K];
  34.         dijagonali[K-1] = new BigInteger("1");
  35.         for(int i = K-2 ; i >= 0 ; --i)
  36.             dijagonali[i] = dijagonali[i+1].multiply(new BigInteger("2"));
  37.        
  38.         f(0,0);
  39.        
  40.         int brojac = 0;
  41.        
  42.         while(DP[0][0].mod(new BigInteger("2")).equals(new BigInteger("0"))
  43.                 && dijagonali[brojac].mod(new BigInteger("2")).equals(new BigInteger("0")))
  44.         {
  45.             DP[0][0] = DP[0][0].divide(new BigInteger("2"));
  46.             ++brojac;
  47.         }
  48.        
  49.         System.out.println(DP[0][0]);
  50.         System.out.println(dijagonali[brojac]);
  51.        
  52.         in.close();
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement