共有组询问。
每组询问输入四个正整数。
对于每组询问,输出一行答案。
如果无论如何都不能让等于
,则输出-1。
否则输出两个整数,分别代表最少操作次数和最多操作次数。
3 1 6 2 5 1 4 2 2 2 10 2 6
1 2 -1 2 4
第一组询问,操作一次的方案:直接使加5。操作2次的方案:先加2再加3。
第二组询问,由于只能加2,显然无法使得1变成4。
第三组询问,操作2次的方案:先加3再加5(方案不唯一)。操作4次的方案:加4次2。
#include <bits/stdc++.h>
#include <climits>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
long a, b, l, r;
scanf("%ld %ld %ld %ld",&a,&b,&l,&r);
// cin >> a >> b >> l >> r;
long target = b - a;
long dis = r - l;
long most = target / l;
long remain = target - most * l;
if(dis * most >= remain) {
cout << (target + r - 1) / r << ' ' << most << endl;
}
else cout << -1 << endl;
}
}
// 64 位输出请用 printf("%lld") n = int(input()) for _ in range(n): a, b, l, r = map(int, input().split()) m = b - a result = [-1, -1] maxcnt = m // l mincnt = m // r if m % r != 0: mincnt += 1 if m >= mincnt * l and m <= mincnt * r and m >= maxcnt * l and m <=maxcnt * r: print(mincnt, maxcnt) else: print(-1)