用 K 條邊圍成多邊形,邊要么是軸向單位長度 1,要么是 45° 斜邊長度 √2。頂點在整點。求最大面積(保留一位小數)。3 ≤ K ≤ 2e9。
最優圖形為「正八邊形趨近正方形」。設 K = 4x + y (y=0,1,2,3):
y=0:正方形,面積 4x²y=1:面積 4x² + 2x - 1y=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 分情況的封閉公式。代碼極短,思維量大。