알고리즘 문제
[C/C++ 백준 1072번] 게임 (Silver 3)
새파란 공대생
2020. 7. 9. 22:18
https://www.acmicpc.net/problem/1072
1072번: 게임
각 줄에 X와 Y가 주어진다. X는 1,000,000,000보다 작거나 같은 자연수이고, Y는 0보다 크거나 같고, X보다 작거나 같은 자연수이다.
www.acmicpc.net
X, Y가 입력으로 주어졌을 때, Z의 값은 (int)(Y/X)로 구할 수 있다.
그리고 승률이 변하기 위한 조건인 (Z+1)/100 <= (Y + i)/(X + i)를 이용해 i의 조건을 구하고, 계산해준 결과를 프린트하면 된다.
코드는 다음과 같다.
#include <cstdio>
int main(void){
long long int X, Y, Z;
scanf("%lld %lld",&X,&Y);
Z=(Y*100)/X;
if(Z==100 || Z==99){
printf("-1");
}
else{
if((long long int)(((Z+1)*X-100*Y)/(100-Z-1.0))==(((Z+1)*X-100*Y)/(100-Z-1.0))){
printf("%lld",(long long int)(((Z+1)*X-100*Y)/(100-Z-1.0)));
}
else{
printf("%lld",(long long int)(((Z+1)*X-100*Y)/(100-Z-1)+1.0));
}
}
}