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;
}