본문 바로가기

알고리즘 문제

[C/C++ 백준 1072번] 게임 (Silver 3)

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));
		}
	}
}