LuoguB2030 计算线段长度 题解

Content

已知线段的两个端点的坐标 \(A(X_a,Y_a),B(X_b,Y_b)\) ,求线段 \(AB\) 的长度。

数据范围:\(|X_a|,|Y_a|,|X_b|,|Y_b|\leqslant 10000\)

Solution

我们先给出平面直角坐标系上两点之间的距离公式:\(d_{AB}=\sqrt{(X_a-X_b)^2+(Y_a-Y_b)^2}\)

那么我们怎么证?勾股定理。显然 \(A,B\) 的距离等于横坐标之差的平方加纵坐标之差的平方再开根号。不妨画个图理解一下:

我们从图中不难发现,\(|X_a-X_b|=f\)\(|Y_a-Y_b|=g\),因此 \(AB=\sqrt{f^2+g^2}=\sqrt{(X_a-X_b)^2+(Y_a-Y_b)^2}\),注意这里把绝对值符号去掉了,想想这是为什么。

因此,直接按照这个公式输出答案即可。

Code

#include <bits/stdc++.h>
using namespace std;

int main() {
	double Xa,Ya,Xb,Yb,AB;
	cin>>Xa>>Ya>>Xb>>Yb;
	AB=sqrt(pow(abs(Xb-Xa),2)+pow(abs(Yb-Ya),2));
	cout<<fixed<<setprecision(3)<<AB;
	return 0;
}
posted @ 2021-12-15 21:56  Eason_AC  阅读(215)  评论(0)    收藏  举报