进行n场比赛,当胜场率大于a/b时,这场必输,反之必赢,而且题面已经给出了答案范围
首先考虑第n场的胜负,设要求的胜场率为x=2.9/4,第n-1场后的胜场率必定在其两侧,要么2/4要么3/4,当y=2/4,第n场必胜,所以3/5,当y=3/4,第n场必输,所以3/5,看出第n场胜场率与第n-1场无关,那么前n-1场期望的胜场数应该是(n-1)*a/b,但因为下取整所以当不是b的倍数的时候是偏少的,那么第n场就要赢,如果是b的倍数,因为小于等于a/b的时候都要赢,所以第n场还是必须要赢,最终固定答案
AC代码:
#include <bits/stdc++.h> using namespace std; using LL = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while (T--) { LL n, a, b; cin >> n >> a >> b; cout << (n - 1) * a / b + 1 << '\n'; } return 0; }
第46届ICPC亚洲区域赛(昆明)K
最新推荐文章于 2024-08-12 16:55:46 发布