연분수의 사칙연산
시간 제한3초메모리 제한256 MB
연분수로 주어진 두 유리수의 합, 차, 곱, 몫을 연분수로 구합니다.
문제
실수 의 단순 연분수 표현은 를 정수 부분과 남은 값의 역수로 나누고, 그 역수를 다시 같은 방법으로 나누는 과정을 반복해서 얻는다. 표현의 모양은 다음과 같다.
여기서 모든 는 정수이고 는 양수다. 이 를 부분몫이라고 부른다. 예를 들어 5.4의 부분몫은 , , 다.
같은 무리수는 부분몫이 무한히 많이 필요하다. 유리수는 부분몫이 유한 개이고, 마지막 부분몫이 1이 아니어야 한다는 조건을 붙이면 그 목록이 하나로 정해진다. 연분수로 주어진 두 유리수의 합, 차, 곱, 몫을 구해서 각각 연분수로 나타내라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 세 줄이다. 첫째 줄에 두 유리수 과 의 부분몫 개수인 정수 , 가 주어진다 (). 둘째 줄에 의 부분몫 개가, 셋째 줄에 의 부분몫 개가 주어진다. 모든 부분몫은 과 ()을 만족하고, 각 수의 마지막 부분몫은 1이 아니며, 는 0이 아니다. 0이 두 개 적힌 줄이 나오면 입력이 끝난다.
출력
각 테스트 케이스마다 먼저 Case k:를 한 줄에 출력한다. 는 1부터 세는 테스트 케이스 번호다. 이어서 , , , 의 연분수 표현을 이 순서대로 한 줄에 하나씩 출력한다. 한 수의 부분몫은 공백 하나로 구분해 한 줄에 쓰고, 마지막 부분몫은 1이 되지 않게 한다. 계산 도중에 나오는 값은 모두 부호 있는 64비트 정수 범위에 들어간다.