Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigInteger;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- int N = in.nextInt();
- int K = in.nextInt();
- BigInteger[] DP = new BigInteger[N+1];
- BigInteger dijagonala = new BigInteger("1");
- DP[0] = new BigInteger("0");
- for(int checked = K - 1 ; checked >= 0 ; checked--)
- {
- for(int good = Math.min(checked,N-1) ; good >= checked - good ; good--)
- {
- int bad = checked - good;
- if(DP[bad] == null)
- DP[bad] = new BigInteger("0");
- if(DP[bad+1] == null)
- DP[bad+1] = new BigInteger("0");
- if(good == bad)
- DP[bad] = DP[bad].multiply(new BigInteger("2")).add(dijagonala);
- else if(good == N-1)
- DP[bad] = DP[bad+1].multiply(new BigInteger("2"));
- else if(bad == K-N)
- DP[bad] = DP[bad].multiply(new BigInteger("2"));
- else
- DP[bad] = DP[bad].add(DP[bad+1]).add(dijagonala);
- }
- dijagonala = dijagonala.multiply(new BigInteger("2"));
- }
- while(dijagonala.mod(new BigInteger("2")).equals(new BigInteger("0"))
- && DP[0].mod(new BigInteger("2")).equals(new BigInteger("0")))
- {
- dijagonala = dijagonala.divide(new BigInteger("2"));
- DP[0] = DP[0].divide(new BigInteger("2"));
- }
- dijagonala = dijagonala.divide(new BigInteger("2"));
- System.out.println(DP[0]);
- System.out.println(dijagonala);
- in.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement