Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
static int NCube(int n) {
int c1=(int)(Math.Pow(n,1.0/3)+0.5);
int c2=(int)(Math.Sqrt(n/c1)+0.5);
int c3=n/(c1*c2);
int S=3*c1*c2*c3+2*(c1*c2+c1*c3+c2*c3)+(c1+c2+c3);
int h=n-c1*c2*c3;
if(h!=0) {
int d1=(int)(Math.Sqrt(h)+0.5);
if(d1*d1>h) d1--;
int d2=h/d1;
S+=3*d1*d2+2*(d1+d2)+1;
h-=d1*d2;
if(h!=0) S+=3*h+2;
}
return S;
}
Динамическое программирование. Спичечная модель