首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

CSU 1664 防水堤壩:周長固定求最大面積的數學規律

     編輯:關於C++

問題描述

用 K 條邊圍成多邊形,邊要么是軸向單位長度 1,要么是 45° 斜邊長度 √2。頂點在整點。求最大面積(保留一位小數)。3 ≤ K ≤ 2e9。

幾何規律與公式推導

最優圖形為「正八邊形趨近正方形」。設 K = 4x + y (y=0,1,2,3):

  • y=0:正方形,面積 4x²
  • y=1:面積 4x² + 2x - 1
  • y=2:面積 4x(x+1)
  • y=3:面積 4x² + 6x + 1

統一公式:ans = 4*x*(x + (y>=2)) + (y==1?2*x-1:0) + (y==3?2*x+1:0),最終面積 = ans / 2。輸出 ans/2 若 ans 為偶數則 .0 否則 .5。

代碼實現

int main() {
    long long K;
    while (scanf("%lld",&K)==1) {
        long long x = K/4, y = K%4;
        long long ans = 0;
        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;
}

關鍵點

  • 大數 K≤2e9 需 long long。
  • 面積可能為半整數,輸出格式嚴格要求一位小數。
  • 規律發現靠畫圖找規律,K=7 時易畫錯(實為 5.5)。

總結

CSU 1664 是純數學找規律題。關鍵在於識別「八邊形切角」的最優結構,並推導出 K mod 4 分情況的封閉公式。代碼極短,思維量大。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved