2014-01-30 15:09:37Morris

[ZJ][中線定理] d408. 我要最小值 (Part 2)

內容 :

三角形ABC內部一點P

請求:

PA2+PB2+PC2的最小值!

 

輸入說明 :

第一行輸入正整數N代表接下來有N組測資,1<=N<=5000

N=0時代表輸入結束,不須處裡這行輸入。

接下來N行每行有三個正整數a,b,c代表三角形的三邊長

1<=a,b,c<=1000

並且保證a,b,c可構成三角形

 

輸出說明 :

針對每個三角形ABC

找到內部一點P使得PA2+PB2+PC2有最小值

輸出這個最小值並四捨五入到小數點以下第1位

範例輸入 : 
1
1 1 1
2
4 4 4
5 5 5
0

範例輸出 :

1.0
16.0
25.0

P 點為重心。使用中線定理求解。

#include <stdio.h>
#include <math.h>
using namespace std;

int main() {
int n;
while(scanf("%d", &n) == 1 && n) {
while(n--) {
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
double ma2, mb2, mc2;
mc2 = (a*a + b*b - c*c/2)/2;
mb2 = (a*a + c*c - b*b/2)/2;
ma2 = (c*c + b*b - a*a/2)/2;
printf("%.1lf\n", (ma2 + mb2 + mc2) * 4 / 9.0);
}
}
return 0;
}