2363:Blocks
keyword
BruteForce C++
概要
N(<1000)個の単位立方体から直方体をつくるとき、最小の表面積を求める問題。
これまたサイズが小さいので、一々「和が一定のときは差が小さいときに積が最大に…」とか考えなくても全探索(O(n^1.5)位?)で間に合う。
int main(){ int rept, n, i, j, ans, m; scanf("%d",&rept); while(rept--){ ans = 1<<29; scanf("%d",&n); for(j=1;j<=n;j++)if(n%j==0){ m = n/j; for(i=sqrt(m)+0.5;i>=1;i--)if(m%i == 0){ ans = min(ans, 2*(m + j*(i + m/i))); } } printf("%d\n",ans); } return 0; }