[BOJ] 1072번: 게임

https://www.acmicpc.net/problem/1072


우선 주어진 X, Y에 대해 Z를 계산하고, 정답을 k라고 했을 때 100(Y+k)/(X+k) >= Z+1 이라는 식으로부터 k >= (XZ+X-100Y) / (99-Z) 라는 식을 얻을 수 있습니다. Z가 99 이상이면 자명하게 자연수 k가 존재하지 않습니다.


이제 저 식을 계산해 k를 구하기만 하면 되는데 double 자료형은 오차가 발생할 수 있기 때문에 사용하면 안됩니다. (XZ+X-100Y) / (99-Z)을 계산해서 k를 대략적으로 짐작한 뒤, 실제로 그 k 값이 올바른지 k*(99-Z)와 XZ+X-100Y를 비교해서 알아내야합니다. 만약 올바르지 않다면 1 증가시키면 됩니다.


https://github.com/blisstoner/BOJ/blob/master/1072.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 9521번: PALETA  (0) 2018.01.17
[BOJ] 2621번: 카드게임  (0) 2018.01.16
[BOJ] 11559번: Puyo Puyo  (0) 2018.01.16
[BOJ] 1072번: 게임  (0) 2018.01.15
[BOJ] 2217번: 로프  (0) 2018.01.15
[BOJ] 2206번: 벽 부수고 이동하기  (3) 2018.01.15
[BOJ] 14888번: 연산자 끼워넣기  (0) 2018.01.15
  Comments
댓글 쓰기