[BOJ 1072] 게임
🔗Link
💡Idea
구하고 싶은 값을 K라고 두었을 때, 다음과 같은 식을 세울 수 있다. \(\frac{Y+K}{X+K} = Z + 1\) K에 대하여 정리하면 다음과 같다. \(K = \frac{100Y - (Z + 1)X}{Z - 99}\) 식에서도 알 수 있듯이, Z가 99면 K가 존재할 수 없고, Z가 100이면, 당연하게도 승률이 100보다 커질 수 없으므로 K가 존재할 수 없다. 따라서 Z가 99거나 100이면 -1을 출력하면 된다.
🔑Code
#include <bits/stdc++.h>
using namespace std;
long long x, y;
int main(void){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> x >> y;
long long z = y * 100 / x;
// 승률 99%에서는 더 못올린다. 수식으로 증명 가능.
if(z >= 99) {
cout << -1;
return 0;
}
long long p = x*z + x - 100 * y;
long long q = 99 - z;
long long a = p / q;
if(a*q < p) a++;
cout << a;
return 0;
}
🗨️ Side Notes
아자아자!