信息学奥赛一本通-编程启蒙——3255:练42.1 计算线段长度

题目网址:http://bas.ssoier.cn:8086/problem_show.php?pid=3255

放弃吧,不会有人给我点小心心的

3255:练42.1 计算线段长度


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 349     通过数: 213

【题目描述】

已知线段的两个端点的坐标 A(Xa,Ya),B(Xb,Yb),求线段 AB 的长度。

老师告诉了你,计算公式如下:

 

(图片不清楚,可以打开网址看)

【输入】

第一行是两个实数,即 A 的坐标。

第二行是两个实数,即 B 的坐标。

输入中所有实数的绝对值均不超过 10000。

【输出】

一个实数,即线段 AB 的长度,保留到小数点后 3 位。

【输入样例】

1 1
2 2

【输出样例】

1.414

---------------------------------------------------------------------------------------------------------------------------------

首先,我们需要搞清楚,这道题目要怎么做,这道题目很简单,我们只需要按照公式算出结果就可以了,但关键是怎么算出结果

首先,我们可以很轻松的算出开平方里面的式子(xa-xb)² + (ya-yb)²

这个式子,我们可以轻松算出来,我们先定义四个变量,xa、ya、xb、yb

我们要计算平方,有两种计算方法:

1、直接计算:因为(xa-xb)²=(xa-xb)*(xa-xb),所以,我们就可以把计算(xa-xb)²的式子写成:

(xa-xb)*(xa-xb)

2、运用函数计算:c++有一个自带的函数,专门用来计算幂

pow(2,3)

这个函数,计算的是2³,它的头文件是#include

好,我们已经会计算平方了,那么,开平方怎么算?

我们也需要使用c++里自带的函数:sqrt,头文件是#include

它的用法是这样的:

sqrt(你要算的数);

比如sqrt(2),就会计算出1.414……

所以,我们就可以通过公式来解决这道题目了

---------------------------------------------------------------------------------------------------------------------------------

代码:

#include//这里我用的是万能头,所以就不用写sqrt的头文件 
using namespace std;
int main(){
	double a,b,c,d;
	cin>>a>>b>>c>>d;
	//xa=a   xb=c
	//ya=b   yb=d
	//也就是说,abcd就是那4个输入的数字 
	double e=sqrt( pow(a-c,2) + pow(b-d,2) );
	//写的有点乱,我们分开看
	//pow(a-c,2)计算的是(xa-xb)的平方 
	//pow(b-d,2)计算的是(ya-yb)的平方 
	//将pow(a-c,2)和pow(b-d,2)加起来,得到开平方里面的式子的答案
	//最后用sqrt进行开平方的运算 
	cout<

于是这篇文章就这么愉快地结束了(真的有人会看到这篇文章吗)

你可能感兴趣的:(算法)