【openjudge】Minecraft

【openjudge】Minecraft

描述

Minecraft是一个几乎无所不能的沙盒游戏,玩家可以利用游戏内的各种资源进行创造,搭建自己的世界。

【openjudge】Minecraft_第1张图片

在Minecraft中,基本的建筑元素是边长为1个单位的立方体,Tony想用N个这种小立方体搭建一个长方体,并用他珍藏已久的贴纸对其进行装饰。如果一张贴纸可以贴满小立方体的一个面。那么,他需要用掉多少张贴纸呢?

输入
输入的第一行是测试样例的数目C。剩下的C行,每行有一个整数N,表示小明所拥有的小立方体的个数。N不会超过1000。
输出
你需要输出每个测试样例中,小明最少用掉的贴纸有多少张。
样例输入
5
9
10
26
27
100
样例输出
30
34
82
54
130
【解题思路】

枚举棱长

【代码】

#include<iostream>
#include<cstring>
#include<cstdio>
#define inf 2100000000
using namespace std;
int c,n,ans,sum,k;
int main(){
	scanf("%d",&c);
	for (int t=1;t<=c;++t){
		scanf("%d",&n);
		ans=inf;
		for (int i=1;i<=n;++i)
		  if (n%i==0)
		    for (int j=1;j<=n/i;++j)
		      if (n%(i*j)==0){
		      	k=n/(i*j);
		      	sum=2*(i*j+j*k+k*i);
		      	if (sum<ans) ans=sum;
		      }
		printf("%d\n",ans);
	}
}


你可能感兴趣的:(枚举)