UVA10365 Blocks 题解

· · 题解

题目翻译:

给定 n 个 1\times 1\times 1 的立方体,拼成一个长方体,计算最小的表面积。

题目思路:

超级水题,直接暴力枚举即可。求最大表面积,根据原理:差小积大,说明长、宽、高越接近越好,然后根据立方体表面积公式:

S =a\times b+a\times h+b\times h

其中,取最小值,用 min 函数,其他的暴力解决。

代码:

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
    int t;
    cin>>t;
    while(t--){
        cin>>n;
        int ans=1e9;
        for(int i=1;i<=n;i++){
            if(n%i==0){
                for(int j=1;j<=n;j++){
                    if(n%(i*j)==0){
                        int k=n/(i*j);
                        if(i*j*k==n){
                            ans=min(ans,i*j*2+i*k*2+j*k*2);
                        }
                    }
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}