Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.math.BigInteger;
- import java.util.StringTokenizer;
- class Fraction {
- public BigInteger num;
- public BigInteger denum;
- public Fraction() {
- num = BigInteger.valueOf(-1);
- denum = BigInteger.valueOf(-1);
- }
- public Fraction(long a, long b) {
- num = BigInteger.valueOf(a);
- denum = BigInteger.valueOf(b);
- }
- public void fsum(Fraction b) {
- BigInteger rnum = num.multiply(b.denum).add(b.num.multiply(denum));
- BigInteger rdenum = denum.multiply(b.denum);
- BigInteger g = rnum.gcd(rdenum);
- rnum = rnum.divide(g);
- rdenum = rdenum.divide(g);
- num = rnum;
- denum = rdenum;
- }
- public void fmul(Fraction b) {
- BigInteger rnum = num.multiply(b.num);
- BigInteger rdenum = denum.multiply(b.denum);
- BigInteger g = rnum.gcd(rdenum);
- rnum = rnum.divide(g);
- rdenum = rdenum.divide(g);
- num = rnum;
- denum = rdenum;
- }
- }
- public class Main {
- public static int n,x;
- public static Fraction mem[][];
- public static Fraction solve(int idx, int sum) {
- if(idx == n) {
- if(sum >= x) {
- return new Fraction(1,1);
- }
- else {
- return new Fraction(0,1);
- }
- }
- if(mem[idx][sum] != null) {
- return mem[idx][sum];
- }
- mem[idx][sum] = new Fraction(0,1);
- for(int h = 1; h <= 6; h++) {
- mem[idx][sum].fsum(solve(idx+1,sum+h));
- }
- mem[idx][sum].fmul(new Fraction(1,6));
- return mem[idx][sum];
- }
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
- while(true) {
- StringTokenizer st = new StringTokenizer(br.readLine());
- n = Integer.parseInt(st.nextToken());
- x = Integer.parseInt(st.nextToken());
- if(n == 0 && x == 0) {
- break;
- }
- mem = new Fraction[26][200];
- Fraction ans = solve(0,0);
- if(ans.denum.compareTo(BigInteger.ONE) == 0) {
- bw.write(ans.num + "\n");
- }
- else {
- bw.write(ans.num + "/" + ans.denum + "\n");
- }
- }
- bw.flush();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement