화학 반응식의 균형 맞추기
시간 제한1초메모리 제한128 MB
각 분자를 최대 9개까지만 쓰는 미완성 화학 반응식이 주어질 때, 양변의 원자 수를 맞추는 한 자리 양의 계수를 찾고 이어 붙인 수가 가장 작은 답을 출력하거나 IMPOSSIBLE을 출력한다.
문제
화학에서 반응식의 양쪽에 있는 각 원자의 개수를 똑같이 맞추는 일, 즉 반응식을 균형 있게 만드는 일은 번거롭지만 꼭 필요한 작업이다. 이 문제는 그 작업을 자동으로 수행하는 프로그램을 작성하는 것이다.
화학자들은 다음 규칙에 따라 화학식을 표기한다.
-
각 원소의 이름은 많아야 두 글자로 줄여 쓴다. 첫 글자는 항상 대문자이고, 두 번째 글자가 있다면 소문자이다. 예를 들어 칼슘은
Ca, 산소는O, 염소는Cl로 쓴다. -
하나의 분자는 여러 원자로 이루어진다. 분자를 표기할 때에는 구성 원자들의 약어를 이어 붙인다. 예를 들어
NaCl은 염화 나트륨을 나타낸다. 각 원자 뒤에는 개수를 나타내는 숫자가 올 수 있다. 예를 들어CaCl2는 칼슘 원자 개와 염소 원자 개로 이루어진다. 개수가 생략되면 로 본다(그래서HCl은H1Cl1과 같다). 개수는 항상 부터 까지의 한 자리 숫자이다. 또한CH3COOH의 수소처럼, 같은 원소가 한 분자식 안에서 여러 번 나타날 수도 있다. -
일반적인 화학 반응에서는 여러 분자가 결합하여 다른 여러 분자를 만든다. 잘 알려진 중화 반응의 예는 다음과 같다.
2HCl + CaO2H2 -> CaCl2 + 2H2O이는 염산
HCl분자 개와 수산화 칼슘CaO2H2분자 개가 반응하여 염화 칼슘CaCl2분자 개와 물H2O분자 개를 만든다는 뜻이다. -
모든 화학 반응에서, 반응식 오른쪽에 있는 각 원자의 총개수는 왼쪽에 있는 같은 원자의 총개수와 같다. 그래서 이것을 '반응식(등식)'이라 부른다.
균형이 맞지 않는 반응식
이 주어질 때, 다음이 균형을 이루도록 계수 과 을 찾는 프로그램을 작성하여라.
입력
첫째 줄에 테스트 케이스의 수를 나타내는 정수 () 가 주어진다. 이어지는 개의 각 줄에는 다음 형태의 반응식이 하나씩 주어진다.
양쪽 항은 = 로 구분하고, 한쪽 항 안의 분자들은 + 로 구분하며, 각 와 는 위 규칙을 따르는 분자식이다.
입력으로 주어지는 반응식은, 만약 균형을 맞출 수 있다면 계수 와 를 모두 이상 이하의 범위에서 정할 수 있도록 보장된다. 한 반응식에 등장하는 분자는 개 미만이고, 서로 다른 원소는 종류 미만이며, 각 분자는 많아야 종류의 서로 다른 원자로 이루어진다. 입력의 각 줄에는 공백 문자가 없고, 길이는 최대 자이다.
출력
각 테스트 케이스마다 한 줄에, 구한 계수들을 다음 순서로 공백 하나로 구분하여 출력한다.
모든 계수는 이상 이하의 정수여야 한다. 반응식을 균형 있게 만드는 계수 조합이 여러 가지일 때에는, 계수들을 위 순서대로 이어 붙여 만든 자리 십진수
가 가장 작아지는 조합을 출력한다. 반응식의 균형을 맞추는 것이 불가능하면 IMPOSSIBLE 을 출력한다.