小 V 有 \(s\) 块钱,商店里有巧克力卖,每块巧克力 \(c\) 块钱,现在商店给出优惠:购买 \(a\) 块巧克力可以免费获得 \(b\) 块巧克力,求小 V 最多能够买到的巧克力的块数。
你需要处理 \(t\) 组询问。
数据范围:\(1\leqslant t\leqslant 100,1\leqslant s,a,b,c\leqslant 10^9\)。
我们可以明显的发现,尽量把钱花完能够获得最多的巧克力。所以我们先买 \(\left\lfloor\dfrac{s}{c}\right\rfloor\) 块巧克力,然后可以获得 \(\left\lfloor\dfrac{\left\lfloor\dfrac{s}{c}\right\rfloor}{a}\right\rfloor\) 次优惠,因此答案就是 \(\left\lfloor\dfrac{s}{c}\right\rfloor+\left\lfloor\dfrac{\left\lfloor\dfrac{s}{c}\right\rfloor}{a}\right\rfloor\times b\)。
int t;
long long s, a, b, c;
int main() {
scanf("%d", &t);
while(t--) {
scanf("%lld%lld%lld%lld", &s, &a, &b, &c);
printf("%lld\n", s / c + s / c / a * b);
}
return 0;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章