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;
}