Example
input
6
15 5 3 2
15 5 4 3
15 5 2 1
15 5 5 1
16 7 5 2
20 5 7 3
output
4
-1
5
2
0
1
解析:
k个电,
第一种为 k>a 时,只玩游戏 k-a;
第二种,k>b,一边玩一边充电 k-b
问完成n轮游戏的情况下,优先第一种情况,问只玩游戏最多多少次。
完不成则-1.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll t,k,n,a,b;
int main(){
scanf("%lld",&t);
while(t--){
scanf("%lld%lld%lld%lld",&k,&n,&a,&b);
if(k<=n*b){ //这里如果都 b 都不够,则肯定不符题意
puts("-1"); //上一行为什么等于,由于题目采用 b 必须严格大于 b
continue; //所以如果相等,最后剩余一个 b ,无法继续了
}
ll s=k-n*b; //全部用 b 剩余多少电量
ll res=(s-1)/(a-b); //将剩余的电量补到 a 中,康康能满足几个 a 的需求
res=min(res,n); //取最小值,因为可能剩余很多,但是 n 很小
printf("%lld\n",res);
}
return 0;
}