问题 A: 基本算法4.1堆积木
时间限制: 1 Sec 内存限制: 128 MB
提交: 85 解决: 71
[提交] [状态] [讨论版] [命题人:admin]
题目描述
小明的侄子要过生日了,小明买了一套儿童积木送他。这套积木由N个边长为1厘米的正方体小块组成,小明想把这些小块堆成一个大的矩形方体,然后将整个方体包裹上漂亮的包装纸,请问小明最少需要多少平方厘米的包装纸即可?
输入
输入的第一行为一个正整数C,表示测试样例的组数。
每组输入是一个正整数N(1<=N<=1000),表示积木块的个数。
输出
对于每组输入,输出将整个方体完全包裹上包装纸所需要的包装纸的最小面积。
样例输入
5
9
10
26
27
100
样例输出
30
34
82
54
130
#include<bits/stdc++.h>
using namespace std;
int minx;
int v[1010][1010];
int s(int x,int y,int z)
{
int ss;
ss=2*z*(x+y)+2*x*y;
return ss;
}
int main()
{
int N,n;
cin>>N;
while(N--)
{
cin>>n;
minx=s(1,1,n);
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
for(int j=1;j<=n/i;j++)
if((n/i%j)==0&&v[i][j]==0)
{ v[i][j]=1;
v[j][i]=1;
int k=n/i/j;
minx=min(s(i,j,k),minx);
}
}
}
cout<<minx<<endl;
}
return 0;
}