題目連結:四邊形的面積計算
作為本次挑戰賽的第一道題,難度其實不大。(我相信很多人跟我一樣不太喜歡數學,一看到數學的題目就頭疼)不過這道題還是非常簡單的,值得一試。
解題思路
根據瞪眼法,題目中所繪製出來的圖形是一個梯形(梯形是隻有一組對邊平行的四邊形,顯然圖中線段 \(\overline{AB} \parallel \overline{GF}\)。因此根據梯形的面積計算公式就可以得到本問題的解。
眾所周知,梯形的面積公式為 \(S_{\text{area}} = \frac{(上底 + 下底) \times 高}{2}\)。我們的問題就化簡為了求解這幾個未知變數。每一個變數的數值對應如下:
- 上底:如題目圖中所示,這個梯形的上底長度就是線段 \(\overline{AB}\) 的長度。
- 下底:如題目圖中所示,這個梯形的下底長度就是線段 \(\overline{FG}\) 的長度。
- 梯形的高:透過觀察,很容易發現梯形的高就是兩個正方形的邊長之差,也就是 \(\lvert n - m\rvert\)。
最後將所有的量都代入梯形的面積公式即可得到:\(S_{\text{area}} = \frac{(n + m) \times \lvert n - m\rvert}{2}\)。
正確程式碼
注意點:因為涉及到小數計算,因此在寫程式碼的時候要關注一下資料型別。
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int t;
void solve(){
int n, m;
cin >> n >> m;
double ans = 1.0 * (n + m) * abs(m - n) * 0.5;
printf("%.10lf\n", ans);
return ;
}
int main(){
cin >> t;
while(t--) solve();
return 0;
}