d199 - 矩形之內接三角形面積
題目描述
題目給定一個矩形ABCD,以及三個三角形△ABE、△ECF、△ADF的面積。要求計算三角形△AEF的面積。輸入為三個整數,分別代表這三個三角形的面積。
解題思路
設△ABE的面積為S1,△ECF的面積為S2,△ADF的面積為S3,△AEF的面積為S4。設AB = a, BC = b, AD = b, CD = a。 則 S1 = 0.5 * a * BE, S2 = 0.5 * (a - CF) * (b - EC), S3 = 0.5 * b * DF。 令 BE = x, EC = y, DF = z, CF = w。 則 S1 = 0.5 * a * x, S2 = 0.5 * (a - w) * y, S3 = 0.5 * b * z。 由於 BC = x + y = b, CD = w + CF = a, 因此 CF = a - w。 矩形面積 = S1 + S2 + S3 + S4 = a * b。 S4 = a * b - S1 - S2 - S3。 已知 S1, S2, S3,需要求 S4。 根據題目條件,可以推導出矩形面積的邊長關係,並利用海龍公式計算三角形面積。 令 p = S1, q = S2, r = S3。 矩形面積 = S1 + S2 + S3 + S4 S4 = sqrt((p+q+r)(p+q+r) - 4p*r)
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <stdio.h>
#include <math.h>
int main(){
long long int p, q, r;
while(scanf("%lld %lld %lld",&p,&q,&r)>0){
printf("%.0f\n",sqrt((p+q+r)*(p+q+r)-4*p*r));
}
return 0;
}