程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> CSU1664: 防水堤壩

CSU1664: 防水堤壩

編輯:關於C++

Description

在太平洋的一個小島上,島民想要建立一個環島的堤壩,我們可以將小島簡化為一個二維平面,你需要使用K條邊(這些邊要麼是水平或者垂直長度為1的邊,要麼是45度傾斜的長度為√2的邊)圍成一個多邊形,多邊形的頂點必須位於整點,然後要讓圍成的多邊形面積最大,你需要求出最大面積是多少。

Input

輸入包含多個測試實例,每組實例給出一個數K。(3≤K≤2000000000)

Output

每一行對應一個要求的答案。(保留一位小數)

Sample Input

3
4
5
6

Sample Output

0.5
2.0
2.5
4.0

HINT

 

Source


中文不需要解釋題意了,這道題關鍵還是畫圖。。。找規律,真的是很坑,k=7的時候一開始怎麼畫都是4.5,後來終於才發現是5.5 總之比較蛋疼的一題
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define lson 2*i
#define rson 2*i+1
#define LS l,mid,lson
#define RS mid+1,r,rson
#define UP(i,x,y) for(i=x;i<=y;i++)
#define DOWN(i,x,y) for(i=x;i>=y;i--)
#define MEM(a,x) memset(a,x,sizeof(a))
#define W(a) while(a)
#define gcd(a,b) __gcd(a,b)
#define LL long long
#define N 200005
#define INF 0x3f3f3f3f
#define EXP 1e-8
#define lowbit(x) (x&-x)
const int mod = 1e9+7;

int main()
{
    LL n,x,y;
    LL ans;
    while(~scanf("%lld",&n))
    {
        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;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved