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));
}
}
}
'알고리즘 문제' 카테고리의 다른 글
[C/C++ 백준 2785번] 체인 (Silver 2) (0) | 2020.07.15 |
---|---|
[C/C++ 백준 1669번] 댕댕이 쓰다듬기 (Silver 1) (0) | 2020.07.14 |
[C/C++ 백준 1789번] 수들의 합 (Silver 5) (0) | 2020.07.08 |
[C/C++ 백준 1057번] 토너먼트 (Silver 3) (0) | 2020.07.07 |
[C/C++ 백준 1037번] 약수 (Silver 5) (0) | 2020.07.07 |