#include <iostream>
#include<queue>
#include<algorithm>
using namespace std;
queue<pair<int,int> > q;
int n,k,a,b;
int ans=(int)2e9+10;
void bfs(){
q.push(make_pair(n-1,a));
if(n%k==0)q.push(make_pair(n/k,b));
while(!q.empty()){
int x=q.front().first;
int v=q.front().second;
q.pop();
if(x==1){ans=min(ans,v);continue;}
if(v>ans)continue;
if(x>0)q.push(make_pair(x-1,v+a));
if(x%k==0)q.push(make_pair(x/k,v+b));
}
}
int main()
{
cin>>n>>k>>a>>b;
bfs();
if(ans==(int)2e9+10)cout<<0;
else cout<<ans;
return 0;
}
谢谢大佬,就一个不同的BFS。。。