얼음을 넣은 음료

시간 제한1초메모리 제한128 MB

요약
물과 얼음의 처음 질량과 온도가 주어질 때, 섞은 뒤 평형 온도와 최종 얼음·물의 양을 구한다. 각 값은 소수 첫째 자리로 반올림한다.
난이도

보통10점 중 4점

유형
수학, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

좋은 음료에는 항상 얼음이 들어가며, 그 맛을 좌우하는 것은 얼음의 양이다. 얼음이 너무 많으면 음료는 잘 식지만 (예를 들어 얼음을 줄이고 보드카를 더 넣을 수도 있으니) 다소 눈속임에 가깝고, 얼음이 너무 적으면 음료가 미지근해져 마시기 어렵다. 바텐더가 음료를 섞거나 마시는 일은 아니지만, 이런 혼합물의 결과를 예측하도록 도와주자.

문제를 단순하게 하기 위해, 순수한 물과 얼음이 닫힌 계 안에서 섞인다고 가정한다. 즉 바깥 온도나 병이 데워지는 것 등 외부와의 열 교환은 없다. 충분한 시간이 지나면 계는 평형 상태에 도달하여 더 이상 온도 변화도, 얼음이 녹거나 물이 어는 일도 일어나지 않는다. 이때 평형 상태의 최종 온도와, 그 상태에 남아 있는 얼음과 물의 양을 구하는 것이 목표다.

물리학에서 알려진 대로, 물 1 g의 온도를 1 K 올리는 데는 4.19 J이 필요하고, 얼음 1 g의 온도를 1 K 올리는 데는 2.09 J이 필요하다. 즉 비열은 cw=4.19c_w = 4.19 J/(g·K), ci=2.09c_i = 2.09 J/(g·K)이다. 얼음 1 g을 녹이는 데는 335 J이 필요하며 이때 온도는 0 °C로 일정하게 유지되므로, 융해에 필요한 상수는 em=335e_m = 335 J/g이다. 실험 전 얼음과 물이 가진 총 열에너지는 최종 혼합물의 열에너지와 같다.

물질 1 g의 에너지를 −30-30 °C를 기준으로 생각해 보자. 얼음이 0 °C까지 데워지는 동안 에너지는 선형으로 증가하고, 0 °C에서 1 g이 녹는 동안 에너지가 eme_m만큼 뛰어오르며 (이때 얻는 에너지는 이미 녹은 비율에 비례한다), 그 뒤 물이 0 °C 위로 데워지면서 다시 선형으로 증가한다.

입력

입력에는 여러 개의 테스트 케이스가 주어진다. 각 테스트 케이스는 네 개의 실수 mwm_w, mim_i, twt_w, tit_i로 이루어진다. 물의 질량 mwm_w과 얼음의 질량 mim_i은 모두 0 이상이며 그램(g) 단위이고, mw+mi>0m_w + m_i > 0을 만족한다. 이어 물의 온도 twt_w와 얼음의 온도 tit_i가 섭씨도(°C) 단위로 주어지며, −30<ti≤0≤tw<100-30 < t_i \le 0 \le t_w < 100이다. 한 테스트 케이스의 네 값은 임의의 공백 문자로 구분될 수 있다. 마지막 테스트 케이스 뒤에는 네 개의 0이 오며, 이는 처리하지 않는다.

출력

각 테스트 케이스마다 다음 형식으로 정확히 한 줄을 출력한다.

<얼음> g of ice and <물> g of water at <온도> C

여기서 <얼음>과 <물>은 평형 상태의 얼음과 물의 질량(g)이고 <온도>는 최종 온도(°C)이다. 모든 값은 소수점 한 자리까지 반올림한다.

예제3

  1. 예제 1

    입력
    100 20 50 -10
    100 22 0  0
    100 35 25 -10.5
    10  90 25 -28
    0 0 0 0
    
    예상 출력
    0.0 g of ice and 120.0 g of water at 27.5 C
    22.0 g of ice and 100.0 g of water at 0.0 C
    6.0 g of ice and 129.0 g of water at 0.0 C
    100.0 g of ice and 0.0 g of water at -4.2 C
    
  2. 예제 2

    입력
    200 0 30 0
    0 0 0 0
    
    예상 출력
    0.0 g of ice and 200.0 g of water at 30.0 C
    
  3. 예제 3

    입력
    0 100 0 -20
    0 0 0 0
    
    예상 출력
    100.0 g of ice and 0.0 g of water at -20.0 C