题目描述
一只奶牛自己独居,它每天需要吃1个水果和花费X元交暖气费。现在奶牛家里有F个水果和D元。奶牛最多能独居多少天?奶牛可以去超市买水果,超市每个水果P元。
输入
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1<=G<=10。
每组测试数据格式:
一行,4个整数X,F,D,P。1<=X,F,D,P<=2000000000。
输出
共G行,每行一个整数。
样例输入 Copy
5
3 5 100 10
2 17 20 1
1 97 98 1
16 4 8 2
17 1 2000000000 4
样例输出 Copy
11
10
97
0
95238095
套用二分模板,对答案进行二分
(check函数里注意判断水果数大于当前天数的情况,因为这个卡了半天。。。)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll g, x, f, d, p, ans;
int check(ll a) {
if (f >= a) {
if (x * a <= d) return 1;
return 0;
} else {
if ((a - f)*p + x * a <= d) return 1;
return 0;
}
}
int main() {
ll l, r, mid;
cin >> g;
while (g--) {
l = 0, r = 2000000000;
cin >> x >> f >> d >> p;
while (l <= r) {
mid = (l + r) >> 1;
if (check(mid) == 1) l = mid + 1, ans = mid;
else r = mid - 1;
}
cout << ans << endl;
}
}