Hướng dẫn giải của Bedao Regular Contest 02 - GEOMETRY2
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả:
Trước hết, chúng ta cần xác định tâm ~O~ và chia hình ra thành các phần để tiện tính toán như hình sau:
Trong hình, ta nhận thấy:
~\angle AOB~ = ~\angle BOC~ = ~\frac{360}{5}~ = ~72^\circ~
~\angle AOC = \angle AOB + \angle BOC = 72^\circ \times 2 = 144^\circ~
~AE = \sqrt{(2 \times AO \times OE) - cos(\angle AOE)} = \sqrt{(2 \times r^2) - cos(72^\circ)}~
Mà ~ABCDE~ là ngũ giác đều nên ~CD = DE~
~\angle BAE = \angle AED = \angle EDC = \angle DCB = \angle CBA = \frac{540}{5} = 108^\circ~
~S_{\triangle AOC} = \frac 1 2 \times (AO \times OC) \times sin(\angle AOC) = \frac1 2 \times r^2 \times sin(144^\circ)~
~S_{\triangle AOE} = \frac 1 2 \times (AO \times OE) \times sin(\angle AOE) = \frac1 2 \times r^2 \times sin(72^\circ)~
~S_{\triangle CDE} = \frac 1 2 \times (CD \times DE) \times sin(\angle EDC) = \frac1 2 \times r^2 \times sin(108^\circ)~
~S~ viên phân~_{AE}~ = ~S~ quạt~_{AOE}~ - ~S\triangle_{AOE}~ = ~(\frac{(\pi \times r^2 \times 72^\circ)}{360^\circ}) - S_{\triangle AOE}~
Tất cả các hình viên phân trong hình đều có diện tích bằng nhau nên dễ dàng chứng minh được ~\triangle{CDE} = \triangle{EDK}~ và ~\triangle{AOC} = \triangle{AOE}~
~S_{\triangle AEH} = \frac 1 2 \times (AE \times EH) \times sin(\angle AEH) = \frac1 2 \times r^2 \times sin(72^\circ)~
~\rightarrow~ Ta có công thức tính diện tích cuối cùng như sau: Với viên phân được viết tắ là VP
~S_{tổng} = 2 \times (2 \times S_{\triangle AOC} + S_{\triangle AOE} )+ S_{\triangle CED} + S_{\triangle AEH} + S_{VP}~
Code mẫu
#include<bits/stdc++.h> #define ll long long #define nmax 505 #define fas ios::sync_with_stdio(0); cout.tie(0); cin.tie(0) #define el "\n" #define fi first #define se second #define pi acos(-1) #define lb long double using namespace std; lb r, BOD, BOC, DE, CDE, VP, CEH, x, AEH; lb ssin(lb a) { return sin(a * pi / 180); } lb scos(lb a) { return cos(a*pi/180); } int main() { fas; //freopen("CR2.inp","r",stdin); // freopen("CR2.out","w",stdout); int q; cin >> q; while(q--) { cin >> r >> x; // cout << scos(72); BOD = (1.0/2.0*(r*r))*ssin(144); BOC = (1.0/2.0*(r*r))*ssin(72); DE = sqrt((2.0*r*r)-(2.0*r*r*scos(72))); CDE = (1.0/2.0*(DE*DE))*ssin(108); VP = 2.0*(((pi*r*r*72.0)/360.0)-BOC); AEH = (1.0/2.0*(DE*x)*ssin(72)); // cout << BOD << " " << BOC << " " << DE << " " << CDE << " " << VP << " " << CEH << el; lb res = (BOD*2.0+BOC)*2.0+CDE+VP+CEH-VP/2.0+AEH; cout << fixed << setprecision(9) << res << "\n"; } }
Bình luận
sao trong solution lại ghi tg AOC = tg AOE và tg CDE = tg EDK ạ mà e có thấy bằng nhau đâu ạ :((