【題解】A23328.四邊形的面積計算

Macw發表於2024-06-11

題目連結:四邊形的面積計算

作為本次挑戰賽的第一道題,難度其實不大。(我相信很多人跟我一樣不太喜歡數學,一看到數學的題目就頭疼)不過這道題還是非常簡單的,值得一試。

解題思路

根據瞪眼法,題目中所繪製出來的圖形是一個梯形(梯形是隻有一組對邊平行的四邊形,顯然圖中線段 \(\overline{AB} \parallel \overline{GF}\)。因此根據梯形的面積計算公式就可以得到本問題的解。

眾所周知,梯形的面積公式為 \(S_{\text{area}} = \frac{(上底 + 下底) \times 高}{2}\)。我們的問題就化簡為了求解這幾個未知變數。每一個變數的數值對應如下:

  1. 上底:如題目圖中所示,這個梯形的上底長度就是線段 \(\overline{AB}\) 的長度。
  2. 下底:如題目圖中所示,這個梯形的下底長度就是線段 \(\overline{FG}\) 的長度。
  3. 梯形的高:透過觀察,很容易發現梯形的高就是兩個正方形的邊長之差,也就是 \(\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;
}

相關文章