hello大家吼啊,我这个蓝名小蒟蒻又双叒叕来写题解啦!这是本蒟提交的唯一一篇翻译,当然要写篇题解纪念一下啦!

首先我们的思路当然是考虑买哪种票便宜,第一种票的价格为:

n/m*b+(n%m)*a

第二种票的价格就不用说了,a*n搞定。

但是!但是!但是!有可能第一种票比第二种票便宜很多,买完n div m张票后,再买一张第一种票可能比第二种票要便宜,所以!

n/m*b+min((n%m)*a,b)

这才是第二种票真正的价格!

然后,用一个min语句求较便宜的一种方案,如下:

min(n/m*b+min((n%m)*a,b),a*n)

献上既不整齐也不美观的小破程序:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>

using namespace std;
int n,b,m,a;
float s;
int main()
{
    cin>>n>>m>>a>>b;
    s=b/m;
    cout<<min(n/m*b+min((n%m)*a,b),a*n);

    return 0;
}

小破程序没什么好抄的,抄题勿提交,提交勿抄题!