import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Created by jordanly on 4/20/15. */ public class Continued_Fractions { public static Scanner in = new Scanner(System.in); public static void main(String[] args) { int aLen = in.nextInt(); int bLen = in.nextInt(); int[] aFrac = new int[aLen]; int[] bFrac = new int[bLen]; for (int i = 0; i < aLen; i++) { aFrac[i] = in.nextInt(); } for (int i = 0; i < bLen; i++) { bFrac[i] = in.nextInt(); } double aVal = calcFraction(aFrac, 0); double bVal = calcFraction(bFrac, 0); double add = aVal + bVal; double sub = aVal - bVal; double mul = aVal * bVal; double div = aVal / bVal; printArr(createFraction(add)); printArr(createFraction(sub)); printArr(createFraction(mul)); printArr(createFraction(div)); } public static void printArr(int[] arr) { StringBuilder b = new StringBuilder(); for (int i = 0; i < arr.length; i++) { if (b.length() > 0) { b.append(" "); } b.append(arr[i]); } System.out.println(b.toString()); } public static int[] createFraction(double val) { List l = new ArrayList(); while (true) { if (val - Math.floor(val) - 1 < .000001 && val - Math.floor(val) - 1 > -.000001) { val = Math.round(val); } l.add((int) Math.floor(val)); val = val - Math.floor(val); if (val > .005) { val = 1 / val; } else { break; } } int[] ret = new int[l.size()]; for (int i = 0; i < ret.length; i++) { ret[i] = l.get(i); } return ret; } public static double calcFraction(int[] arr, int index) { if (index < arr.length) { double addVal = calcFraction(arr, index + 1); if (addVal > 0) { return arr[index] + 1/addVal; } else { return arr[index]; } } return 0; } }