題目連結: https://zerojudge.tw/ShowProblem?problemid=b004
# 內容
一頭牛正在牧場中吃草,而且這頭牛的鼻環穿過了一條綁在兩根柱子之間的繩子。由於環可以自由在繩子上移動,所以這頭牛相當於綁在這條繩子上的任何一個地方。你的工作是求出這頭牛可以吃多少面積的草。假設 pi = 2*cos-1 (0) (在這裡角度以弧度表示)。同時,你可以假設繩子不具寬度、牛視為一個點,並且柱子和環的寬度可以忽略。請你用 double 這種資料型態來進行浮點數的運算。
# 輸入
每列包含了兩個整數 D (0 <= D <= 1000) 以及 L (D < L <= 1500 )。第一個整數 D 代表兩根柱子之間的距離;第二個整數 L 代表繩子的長度。
# 輸出
對於每筆測試資料請輸出一列,包含一個浮點數,精確到小數以下第三位。這個浮點數代表了牛可以吃到的草地面積。
# 解題思路
長邊:L/2, 短邊:sqrt ((L/2 * L/2) - (D/2 * D/2)), 橢圓面積:pi * 長邊 * 短邊
可以使用 printf ("%.3f\n", x) 來顯示小數點後三位
使用 sqrt (平方根)、acos 前,必須先宣告 cmath
# 程式碼
#include <iostream> | |
#include <cmath> | |
#include <stdio.h> | |
using namespace std; | |
int main() | |
{ | |
double D,L,pi,area; | |
while(cin >> D >>L) | |
{ pi = 2*acos(0); | |
area = pi*L/2*sqrt( (L/2)*(L/2) -(D/2)*(D/2) ); | |
printf("%.3f\n",area); | |
} | |
return 0; | |
} |