首页 > 学院 > 开发设计 > 正文

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

2019-11-10 17:30:43
字体:
来源:转载
供稿:网友

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;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表