信息学奥赛一本通-编程启蒙——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<cmath.h>

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

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

它的用法是这样的:

sqrt(你要算的数);

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

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

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

代码:

#include<bits/stdc++.h>//这里我用的是万能头,所以就不用写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<<fixed<<setprecision(3)<<e;//一定要记得保留3位小数 
	return 0;
}

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值