caohaha's stuff

2017-08-20 11:12:29

writer:pprp
CCPC预选赛水平太菜了,去不了了

这个是一个找规律的题目,题意一开始也很难理解

题意描述:

给你一个数,比如说1,在一个坐标系中你需要用多少个线段(横着竖着对角线都可以)才能围出1单位的面积

很容易发现,当尽可能多的是对角线才能满足面积最大

规律如图:加一个边,两个边,三个边,四个边

这几种情况

代码如下:(大佬的)

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int T, S;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &S);

        int L = sqrt(S/2);   
        int area = 2*L*L;          
        
        if(S - area == 0)  //如果恰好等于
        {
            printf("%d\n", L * 4);
        }
        else if(S - area <= L - 1)
        {
            printf("%d\n", L * 4 + 1);
        }
        else if(S - area <= 2 * L)
        {
            printf("%d\n", L * 4 + 2);
        }
        else if(S <= 2 * (L + 1) * (L + 1) - (L + 2))
        {
            printf("%d\n", L * 4 + 3);
        }
        else
        {
            printf("%d\n", (L + 1)*4);
        }
    }

    return 0;
}

orz ...

posted @ 2017-08-20 11:18  pprp  阅读(139)  评论(0编辑  收藏  举报