您的位置:首页 > 其它

poj2363(枚举水题)

2013-05-30 10:55 239 查看
http://poj.org/problem?id=2363

Blocks

Time Limit: 1000MSMemory Limit: 65536K
Total Submissions: 6396Accepted: 3062
Description

Donald wishes to
send a gift to his new nephew, Fooey. Donald is a bit of a
traditionalist, so he has chosen to send a set of N classic baby
blocks. Each block is a cube, 1 inch by 1 inch by 1 inch. Donald
wants to stack the blocks together into a rectangular solid and
wrap them all up in brown paper for shipping. How much brown paper
does Donald need?
Input

The first line of
input contains C, the number of test cases. For each case there is
an additional line containing N, the number of blocks to be
shipped. N does not exceed 1000.
Output

Your program should
produce one line of output per case, giving the minimal area of
paper (in square inches) needed to wrap the blocks when they are
stacked together.
Sample Input

5
9
10
26
27
100

Sample Output

30
34
82
54
130

Source

Waterloo local 2002.09.21

题意:我要哭了,题目看的太不认真了,长方形那么大的字我居然没记住,a rectangular solid
,还去手算枚举了半天,真是费时又费力。题目就是把n个1*1*1的方块摆成长方形使得它的表面积最大。

这个就直枚举暴力反正才最多1000*1000时间是1s,刚刚好在通过一些技巧至少不会超时

#include<iostream>

int main()

{

int t;

scanf("%d",&t);

while(t--)

{

int
n,i,j,k,area,min=100000;

scanf("%d",&n);

for(i=1;i<=n;i++)//长

{

for(j=1;i*j<=n;j++)//宽

{

if(n%(i*j)==0)

{

k=(n/i)/j;//高

area=(i*j+i*k+j*k)*2;//面积

if(area<min)//取最小值

min=area;

}

else

continue;

}

}

printf("%d\n",min);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: