题目链接
题目意思
给你一个面积,让你求围成这个面积最少需要几条边,其中边的连线只能是在坐标轴上边长为1的的线或者是两个边长为1 的线的对角线。
解题思路
这其实就是一个找规律的题,我们列举前几个会发现,增加斜边,每增加一条边面积就能增加1.5,然后根据你所列出的边数跟面积的关系去找规律,其中每次能被4整除的数都能形成一个菱形,那是边数确定面积最大的。
代码部分
#include <bits/stdc++.h>
using namespace std;
const int MAX=;
double n[MAX],f=,p=;
void prit()
{
memset(n,,sizeof(n));
n[]=;
n[]=;
n[]=;
for(int i=; i<=MAX; i++)
{
int y=i%;
if(y==)
{
n[i]=n[i-]+f;
f+=;
}
if(y==)
{
n[i]=n[i-]+p;
p+=;
}
if(y==)
{
n[i]=n[i-]+f;
}
if(y==)
{
n[i]=n[i-]+p;
}
}
}
int main()
{
prit();
int T;
scanf("%d",&T);
while(T--)
{
double N;
scanf("%lf",&N);
for(int i=; i<=MAX; i++)
{
if(n[i]>=N)
{
printf("%d\n",i);
break;
}
}
}
}