#include<bits/stdc++.h> using namespace std; const int N=25,INF=0x3f3f3f3f; int R[N],H[N]; int minv[N],mins[N]; int n,m; int res; void dfs(int dep,int V,int S) { if(minv[dep]+V>n) return; if(mins[dep]+S>res) return; if(S+2*(n-V)/R[dep+1]>=res) return; if(!dep) { if(V==n) res=min(S,res); return; } for(int r=min(R[dep+1]-1,(int)sqrt((n-V-minv[dep-1])/dep));r>=dep;r--) { for(int h=min(H[dep+1]-1,(n-V-minv[dep-1])/(r*r));h>=dep;h--) { R[dep]=r; H[dep]=h; int t=dep==m?r*r:0; dfs(dep-1,V+r*r*h,S+2*r*h+t); } } } int main() { cin>>n>>m; for(int i=1;i<=m;i++) { minv[i]=minv[i-1]+i*i*i; mins[i]=mins[i-1]+2*i*i; } res=INF; R[m+1]=INF,H[m+1]=INF; dfs(m,0,0);//现在第几层 这层之下的面积,体积是多少 if(res==INF) cout<<0<<endl; else cout<<res<<endl; }