天天看點

HDU 6154 CaoHaha's staff

題目連結

題目意思

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