우리 사이엔 케미가 있어, 자기야
시간 제한1초메모리 제한128 MB
화학식을 원자 개수로 분석한 뒤, 반응을 맞추는 양의 정수 계수(최대공약수 1)를 구하고, 없거나 유일하지 않으면 No를 출력한다.
문제
배리는 화학과 학생으로, 화학 반응식의 계수를 맞추는 것 한 가지만 빼면 무엇이든 잘한다. 화학 반응은 화학 반응식으로 나타내며, 왼쪽에는 반응물, 오른쪽에는 생성물을 두고 화살표로 구분한다. 예를 들어 알루미늄과 산소로 산화 알루미늄을 만드는 반응은 Al + O2 -> Al2O3 으로 쓴다.
이 식은 균형이 맞지 않는다. 왼쪽에는 알루미늄(Al) 원자가 1개, 오른쪽에는 2개 있고, 산소(O) 원자는 왼쪽에 2개, 오른쪽에 3개 있다. 올바르게 균형을 맞춘 식은 4Al + 3O2 -> 2Al2O3 이다.
식의 균형이 맞았을 때, 모든 계수는 양의 정수여야 하며 그들의 최대공약수는 이어야 한다. 다음과 같이 더 어려운 식도 있다: Fe2(SO4)3 + KSCN -> K3Fe(SCN)6 + K2SO4.
괄호 안의 원자들은 닫는 괄호 바로 뒤에 오는 수만큼 모두 곱해진다(따라서 이 식에서 왼쪽에는 산소 원자가 12개, 오른쪽에는 탄소(C) 원자가 6개 있다). 하나의 반응물이나 생성물 안에서 같은 화학 기호는 많아야 한 번만 나타난다. 주어진 반응식의 균형을 맞추는 계수를 구하여라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄이며, 두 양의 정수 과 (반응물의 수와 생성물의 수, 각각 최대 )로 시작한다. 이어서 개의 반응물, 그다음 개의 생성물이 공백으로 구분되어 주어진다. 각 반응물과 생성물은 하나 이상의 항으로 이루어진 화학식이며, 항은 하나의 화학 기호, 하나의 화학 기호 뒤에 이상의 정수가 붙은 것, 또는 괄호로 묶인 화학식(항 하나 이상) 뒤에 이상의 정수가 붙은 것 중 하나이다. 모든 화학 기호는 한 글자 또는 두 글자이며, 첫 글자만 대문자이다. 한 테스트 케이스에서 서로 다른 화학 기호는 개를 넘지 않는다. 두 개의 으로 이루어진 줄이 입력의 끝을 나타내며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 Case X:( 는 부터 시작하는 테스트 케이스 번호)에 이어, 반응식의 균형을 맞추는 계수를 반응물과 생성물이 주어진 순서대로 공백 하나로 구분하여 출력한다. 식의 균형을 아예 맞출 수 없거나, 균형을 맞출 수는 있지만 유일하지 않은 경우(공약수 배수를 제외하고도 서로 다른 계수 집합이 여러 개 존재하는 경우)에는 계수 대신 No 를 출력한다.