题解:P5735 【深基7.例1】距离函数
Dont_Be_Afraid · · 题解
题目传送门
首先,要求三角形的周长,首先就要分别求出三边的长度,最后相加即可得三角形的周长。
然后,就要先解决一条边,找到公式,然后以此类推得出三条边分别的长度。
这里,依据题意,题目中给出了一条线段的两个点,求距离,且告诉了我们距离公式。下面给出证明:
如图,过点
再介绍一个公式:
在
Rt△ 中,两条直角边长度平方的和等于斜边长度的平方。
在文末有相关证明。
回到题中,根据勾股定理,可得:
把
两边同时开方,得:
得证。
接着,我们分别把
这里,两点距离的公式使用了三次,就可以把这个公式做成一个函数。
double dis(double x1, double y1, double x2, double y2) {
double a, b, c;
a = x1 - x2;
b = y1 - y2;
c = sqrt(a * a + b * b);
return c;
}
最后,处理输入、计算、输出等小事,整个程序就结束了。
代码:
#include<bits/stdc++.h>
using namespace std;
double dis(double x1, double y1, double x2, double y2) {
double a, b, c;
a = x1 - x2;
b = y1 - y2;
c = sqrt(a * a + b * b);
return c;
}
int main() {
double c = 0, x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
c = dis(x1, y1, x2, y2) + dis(x2, y2, x3, y3) + dis(x3, y3, x1, y1);
printf("%.2lf", c);
return 0;
}
附:勾股定理证明
如图,大正方形的面积为
我们把
又因为大正方形面积减小正方形面积等于四个三角形面积,可得:
两边同时减去
最后,移项得:
证毕。