UVA10365题解

· · 题解

题目大意

N1\times1\times1 的小正方体,要求你拼成一个长方体,求这个长方体的表面积最小是几。

思路

题目中已经给出了小正方体的数量,所以,长方体的体积是不变的,我们就可以枚举长方形的长、宽、高,再通过长方体表面积公式 S=2(ab+ah+bh) 算出表面积,然后求出最小的表面积即可。

但是需要注意的是只有枚举出来长方形的体积与正方形的总体积一样,才可以更新答案。

代码

#include<bits/stdc++.h>

using namespace std;

int t,n;
int main() {
    cin>>t;
    while(t--) {
        cin>>n;
        int ans=n*6;
        for(int i=1;i<=n;i++) for(int j=1;j<=n/i;j++) {
            if(n%i||n%j||(n/i)%j) continue;
            int k=n/i/j;
            ans=min(ans,2*(i*j+j*k+i*k));
        }
        cout<<ans<<"\n";
    } 
    return 0;
}