카드
면접 대비시간 제한5초메모리 제한128 MB
숫자가 적힌 파란 카드와 빨간 카드가 주어질 때, 두 수가 1보다 큰 공약수를 갖는 파란-빨간 짝의 최대 개수를 구한다.
문제
탁자 위에 파란 카드와 빨간 카드가 여러 장 놓여 있다. 각 카드에는 보다 큰 정수가 하나씩 적혀 있으며, 같은 수가 여러 카드에 적혀 있을 수도 있다.
파란 카드와 빨간 카드에 적힌 두 수가 보다 큰 공약수를 가질 때, 두 카드를 짝지을 수 있다. 하나의 파란 카드와 짝지을 수 있는 빨간 카드가 여러 장일 수 있고, 그 반대도 마찬가지다. 파란 카드와 빨간 카드를 한 장씩 골라 짝지으면 두 카드는 탁자에서 제거된다.
예를 들어 파란 카드 네 장에 각각 , , , 가, 빨간 카드 세 장에 각각 , , 가 적혀 있다고 하자. 이때 다음과 같이 짝지을 수 있다. 먼저 가 적힌 파란 카드와 가 적힌 빨간 카드를 짝지어 제거한다. 다음으로 이 적힌 두 파란 카드 중 하나와 이 적힌 빨간 카드를 짝지어 제거한다. 마지막으로 가 적힌 파란 카드와 가 적힌 빨간 카드를 짝지어 제거한다. 이렇게 하면 제거한 짝은 세 쌍이다.
짝짓는 순서에 따라 만들 수 있는 짝의 총 수가 달라짐에 유의하라. 만약 처음에 가 적힌 파란 카드와 이 적힌 빨간 카드를 짝지어 제거하면, 그 뒤로는 한 쌍만 더 제거할 수 있어 총 두 쌍이 된다.
주어진 카드들에서 제거할 수 있는 짝의 최대 개수를 구하여라.
입력
입력은 여러 개의 데이터셋으로 이루어진다. 데이터셋의 개수는 개 이하이다. 각 데이터셋의 형식은 다음과 같다.
m n
b1 ... bk ... bm
r1 ... rk ... rn
정수 과 은 각각 파란 카드와 빨간 카드의 개수이며, , 이다. ()와 ()는 각각 파란 카드와 빨간 카드에 적힌 수로, 이상 () 미만의 정수이다. 입력의 정수들은 공백 또는 줄바꿈으로 구분된다. 과 뒤에는 각각 줄바꿈이 온다. 데이터셋에는 그 외의 문자가 없다.
입력의 끝은 공백으로 구분된 두 개의 으로 이루어진 줄로 표시된다.
출력
각 데이터셋에 대해, 만들 수 있는 짝의 최대 개수를 나타내는 정수를 한 줄에 출력한다.