用c++怎么解决下面的问题

img


这个问题完全没有思路,想问问各位大家怎么用c++解决这个问题?

等于是一种是a元每次,一种是b元/m次
先判断b/m和a哪个更大,如果b/m更大,那就直接a * n就是总费用。
如果a更大,那么就看n是m的多少倍,这个倍数乘以b;然后再看n%m是多少,看a和余数的积是否大于b,如果大于b,则最后加上b,否则加上a和余数的积

#include <iostream>
using namespace std;
int main()
{
    int n,m,a,b,sum=0,k;
    cin>>n>>m>>a>>b;
    if(b*1.0/m >= a)
        sum = a * n;
    else
    {
        k = n/m;
        sum += k * b;
        k = n%m;
        if(a*k > b)
            sum += b;
        else
            sum += a*k;
    }
    cout<<sum;
}


#include<bits/stdc++.h>

using namespace std;

int n;//需要坐n站 

int a,b,m;//题目中的变量 

int main()
{
    cin>>n;//输入 
    
    cin>>m>>a>>b;
    
    int s=a*m;//s表示如果每次坐1站,坐m站要多少钱 
    
    if(s<b)//如果s<b,表示每次坐一站划算 
    {
        cout<<n*a;//输出 
    }
    else//s>b,尽量每次坐m站 
    {
        int k=n%m;//求坐x次m站后剩下几站 
        
        int x=(n-k)/m;//求x 
        
        cout<<x*b+a*k;//输出 
    }
    
    return 0;
}