防水堤坝(较难题:找规律)

来源:互联网 发布:助赢计划软件 编辑:程序博客网 时间:2024/06/09 20:12


Problem Link:http://139.129.36.234/problem.php?id=1200


1200: 防水堤坝

时间限制: 1 Sec  内存限制: 128 MB
提交: 6  解决: 3
[提交][状态][讨论版]

题目描述

在太平洋的一个小岛上,岛民想要建立一个环岛的堤坝,我们可以将小岛简化为一个二维平面,你需要使用K条边(这些边要么是水平或者垂直长度为1的边,要么是45度倾斜的长度为sqrt(2)的边)围成一个多边形,多边形的顶点必须位于整点,然后要让围成的多边形面积最大,你需要求出最大面积是多少。

输入

输入包含多个测试实例,每组实例给出一个数K。(3<=K<=2,000,000,000)

输出

每一行对应一个要求的答案。(—保留一位小数)

样例输入

3456

样例输出

0.52.02.54.0

提示

中南大学计算机&软件复试QQ群552889929

来源

2015年中南大学研究生复试机试题




AC code:

#include<iostream>#include<algorithm>#include<stdio.h>#include<map>#include<math.h>#include<string.h>#include<queue>#include<map>#include<vector>#include<set>#define LL long long#define exp 1e-9#define MAXN 1000010using namespace std;int main(){//freopen("D:\\in.txt","r",stdin);    LL n,x,y;    LL ans;    while(scanf("%lld",&n)!=EOF)    {        ans = 0;        x = n/4;        y = n%4;        if(y<2)        ans = 4*x*x;        else        ans = 4*x*(x+1);        if(y==1)        ans+=2*x-1;        else if(y==3)        ans+=2*x+1;        if(ans&1)        printf("%lld.5\n",ans/2);        else        printf("%lld.0\n",ans/2);    }    return 0;}


0 0
原创粉丝点击