題目連結
題目意思
給你一個面積,讓你求圍成這個面積最少需要幾條邊,其中邊的連線隻能是在坐标軸上邊長為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;
}
}
}
}