#include <stdio.h>
#include <math.h>
#define max 2000000000
void main()
{
int volume,a,b,c;
do
{
scanf("%d", &volume);
}while (volume<1 || volume>max);
/*
for(a=1;a<=volume;a++)
{
for(b=1;b<=volume/a;b++)
{
for(c=1;c<=volume/a/b;c++)
{
int surface=2*a*b+2*b*c+2*c*a;
if(a*b*c==volume && a<b && b<c)
{
if(minsurface==0){
minsurface = surface;
mina = a;
minb = b;
minc = c;
}
else if(minsurface>surface){
minsurface = surface;
mina = a;
minb = b;
minc = c;
}
}//표면적의 최소값을 어떻게 구할가가ㅏㄱ먼야검내ㅑㅓㄱ매냐ㅓ개ㅑㄴ머애갸먼애먀ㅓ애거
}
}
}
printf("%d %d %d %d\n", mina, minb, minc, minsurface);*/
a = (int)pow((double)volume, (double)1/3);//pow(a,b) : a의 b제곱을 구하는 함수
for( ; volume%a!=0; a--);
volume/=a;
b = (int)pow((double)volume, (double)1/2);
for( ; volume%b!=0; b--);
volume/=b;
c = volume;
printf("%d %d %d %d\n", a, b, c, 2*a*b+2*b*c+2*c*a);
}
챕터가 다중반복문이라 어떻게든 만들어 보려고 했는데 표면적의 최소값을 구해야 하는데서 ㅈㅈ...
요 부분을 넣으니까 해결.. 신기신기
근데 이건 만약 max까지 연산을 할 경우 시간이 너무 오래 걸려서 선배님이 아예 새로 짜심... 그게 밑에 pow함수를 쓴 부분
저걸 짜는거 보면서 느낀게 진짜 아이디어가 중요한것 같아... 난 저렇게 하는건 생각도 못했는데 ㅠㅠ