AT1917 みんなでワイワイみかん 题解

· · 题解

题目传送门

更好的阅读体验?

思路:

  1. 买橘子时单个买需要的钱比配套买便宜或相等,这时直接单个买就可以,代码实现为 a*k

  2. 买橘子时单个买需要的钱比配套买贵,又有两种情况:

    1. 配套买最多,再单个买,代码实现为 b*(k/l)+a*(k%l)
    2. 剩下不能配套买全部,但可以再买一套,代码实现为 (k/l+1)*b
    3. 取最小值即可。

注意:

代码:

#include<bits/stdc++.h>
using namespace std; 
long long k,a,l,b,ans;
int main()
{
    cin>>a>>b>>k>>l;
    if(a*l<=b) ans=a*k;//公式
    else ans=min((k/l+1)*b,(b*(k/l)+a*(k%l)));//公式 
    cout<<ans<<endl;
    return 0;
}