hdu 2335 Containers

时间:2023-03-09 05:43:04
hdu 2335 Containers

水题,就不解释了,不过这个题有一点很好,就是枚举的时候,枚举宽,也就是列数,因为这样才能越来越接近正方形

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#define maxn 5000
#define MAXN 2005
#define MAXM 20000005
#define INF 100000000000000
#define oo 1000000007
using namespace std; typedef long long LL;
int main()
{
int t;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
LL n,x,y;
LL min_n=INF;
scanf("%I64d",&n);
n=(n+)/;
LL tem=(LL)sqrt(double(n));
for(LL i=; i<=tem; i++)
{
LL j=(n+(i-))/i;
LL xx=i*+(i+)*;
LL yy=j*+(j+)*;
//printf("%I64d %I64d %I64d %I64d\n",i,j,xx,yy);
if(xx*yy<min_n)
{
x=xx;
y=yy;
min_n=xx*yy;
}
else if(xx*yy==min_n)
{
if(abs(x-y)>abs(xx-yy))
{
x=xx;
y=yy;
}
}
}
printf("%I64d X %I64d = %I64d\n",max(x,y),min(x,y),min_n); }
}
return ;
}