首页 > 专题系列 > Java解POJ > POJ 2363 Blocks [解题报告] Java
2013
11-11

POJ 2363 Blocks [解题报告] Java

Blocks

问题描述 :

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?

输入:

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.

输出:

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.

样例输入:

5
9
10
26
27
100

样例输出:

30
34
82
54
130

解题代码:

//* @author popop0p0popo
import java.util.*;
import java.io.*;

public class Main{
 public static void main(String[] args){
  Scanner scanner=new Scanner(new BufferedReader(new InputStreamReader(System.in)));
  int c=scanner.nextInt();
	int n,sm;
	for (int l=0;l< c ;l++ ){
	   n=scanner.nextInt();
		sm=4*n+2;
		for (int i=1;i<=n ;i++ ){
			for (int j=1;j*i<=n ;j++ ){
				for (int k=0;k*j*k<=n ;k++ ){
					if (i*j*k==n){
						if (2*(i*j+j*k+k*i)< sm){
							sm=2*(i*j+j*k+k*i);
						}
					}
				}
			}
		}
		System.out.println(sm);
	}
  }
}