b004 - 繩子上吃草的牛
題目描述
題目描述了一頭牛被繩子繫在兩根柱子之間,要求計算牛可以吃到的草地面積。給定柱子間的距離 D 和繩子的長度 L,需要計算以繩子為周長的橢圓面積。
解題思路
這題的核心是將問題轉化為計算橢圓面積。繩子的長度 L 作為橢圓的周長,柱子間的距離 D 作為橢圓的短軸長度。由於橢圓周長公式較複雜,且題目給定了 pi = 2 * acos(0),因此可以利用橢圓面積公式:面積 = pi * 半長軸長 * 半短軸長。
半短軸長度為 D/2。半長軸長度可以通過繩子長度 L 和半短軸長度 D/2 計算得出。由於繩子總長度為 L,因此 2 * pi * sqrt((a^2 - (D/2)^2)) = L,其中 a 為半長軸長度。解此方程可得 a = sqrt((L/2/pi)^2 + (D/2)^2)。
程式碼直接利用給定的 pi 值和公式計算面積,並輸出結果。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include<stdio.h>
#include<cmath>
int main (){
float D,L;
while(scanf("%f%f",&D,&L)>0)
printf("%.3f\n",acos(0)*(L/2.0)*sqrt((L+D)*(L-D)));
}