题目大意:需要买n个水果,第一种水果单价a元,买m送1,第二种单价b元,问最少花费多少钱
1<=a,b<=1e9;1<=n,m<=1e9
思路:这n个水果可以看成是两组,一组是可以用买赠获得的也就是有n/(m+1)次获得买赠的机会,那么对于每次机会最优的策略要么是买m个a,要么是买m+1个b,取最小值,第二组就是不能用买赠的部分,也就是n%(m+1)个水果,对于这组就判断a和b那个小即可。因为两组互不影响,所以分别求出最小再相加即可
//#include<__msvc_all_public_headers.hpp>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
int t;
cin >> t;
while (t--)
{
ll a, b, n, m;
cin >> a >> b >> n >> m;
ll cnt1 = n / (m + 1);//能用买赠的次数
ll cnt2 = n % (m + 1);//不能用买赠的数量
ll ans = cnt1 * min(a * m, b * (m + 1)) + cnt2 * min(a, b);//分组求最小再求和
cout << ans << endl;
}
return 0;
}