CSAcademy Win Percentages
<問題>
2回にわけて同じゲームを行う。
はじめ回ゲームをしていて勝率%だった。(は少数以下切り捨て)
その後ゲームして、回ゲーム(累計)をし勝率%になった。(つまり、追加で回ゲームをした結果勝率がになった。)
追加ゲーム中に勝った数を最大にするとき、その回数はいくつか。
<解説>
勝率が小数点以下切り捨てなので、初回のゲームではのまま、
2回目のゲーム後ではのようにすればよいです。
ゲーム回数はであるため、初回、2回目の勝った回数を全探索し、上記の勝率になるように更新します。
その後追加のゲーム回数と比較し、どちらか小さいほうが答えになります。
<コード>
int main() { cin.tie(0); ios::sync_with_stdio(false); int g1, p1, g2, p2; cin >> g1 >> p1 >> g2 >> p2; int ans1 = 0; rep(i, g1 + 1) { if (i * 100 / g1 == p1) { ans1 = i; break; } } int ans2 = 0; rep(i, g2 + 1) { if (i * 100 / g2 == p2) { ans2 = i; } } P(min(g2-g1,ans2 - ans1)); return 0; }
<感想>
ここ最近の問題の中では一番易しい