poj3536

题意:给定一个立方体的体积,使其表面积最小,求长宽高(长宽高均为整数)

分析:先求其所有因子,然后暴力枚举3条棱的长度,更新最小面积。

View Code
#include <iostream>
#include
<cstdio>
#include
<cstdlib>
#include
<cstring>
usingnamespace std;

#define maxn 10000

longlong f[maxn];

int main()
{
//freopen("t.txt", "r", stdin);
int t;
scanf(
"%d", &t);
int n =0;
for (int i =1; i * i <= t; i++)
if (t % i ==0)
{
f[n
++] = i;
f[n
++] = t / i;
}
int a, b, c, ans =0x3f3f3f3f;
for (int i =0; i < n; i++)
for (int j =0; j < n; j++)
if (t % (f[i] * f[j]) ==0)
for (int k =0; k < n; k++)
if (t == f[i] * f[j] * f[k] && ans > f[i] * f[j] + f[j] * f[k] + f[k] * f[i])
{
ans
= f[i] * f[j] + f[j] * f[k] + f[k] * f[i];
a
= i;
b
= j;
c
= k;
}
printf(
"%lld %lld %lld\n", f[a], f[b], f[c]);
return0;
}
原文地址:https://www.cnblogs.com/rainydays/p/2101763.html