큰 나눗셈
시간 제한5초메모리 제한128 MB
두 수열의 곱으로 주어진 분수를 약분하여 기약분수로 출력합니다.
문제
이론물리학자들은 '삶, 우주, 그리고 모든 것'에 대한 질문의 궁극적인 해답이 42라고 생각하지 않았다. (은하수를 여행하는 히치하이커를 위한 안내서에 나오는 답이다.) 대신 두 양의 정수 와 를 나눈 값에 진짜 해답이 있다고 믿었다.
를 로 나누는 일은 보기보다 만만하지 않다. 두 수는 각각 여러 정수의 곱으로 주어지는데, 곱을 그대로 전개하면 자릿수가 수백 자리까지 불어나서 구식 컴퓨터로는 계산이 엄청나게 오래 걸린다.
영리한 프로그래머인 당신이 이론물리학자들을 도와주자.
입력
첫째 줄에 테스트케이스의 개수 가 주어진다. ()
각 테스트케이스의 첫째 줄에는 두 정수 과 이 주어진다. 은 수열 의 길이, 은 수열 의 길이다. ()
둘째 줄에는 수열 의 원소 개가 공백으로 구분되어 주어지고, 셋째 줄에는 수열 의 원소 개가 같은 방식으로 주어진다. 모든 원소는 이상 이하의 정수다.
나누는 두 수는 각 수열의 곱이다. 즉 , 이다.
출력
각 테스트케이스마다 한 줄에 Case #i: X / Y 형식으로 출력한다. 는 1부터 시작하는 테스트케이스 번호이고, 는 를 로 나눈 값을 기약분수로 나타낸 것이다. 슬래시 양옆에는 공백을 하나씩 둔다.
기약분수는 분자와 분모를 최대공약수로 나누어 더 이상 약분되지 않는 분수다. 나눈 값이 정수로 떨어져도 분모를 생략하지 않고 을 그대로 출력한다. 와 는 32비트 정수 범위 안에 들어간다.