C++勾股定理及拓展解题

勾股定理是毕达哥拉斯和他的学派在公元前 500 年左右发现的,想用它解题得先知道什么是勾股定理。

勾股定理是指:直角三角形短边1的平方+短边2的平方=长边的平方,如图一,3*3+4*4=5*5=25。

(图一)

因此,我们可以编写出以下代码,来判断当前三角形是不是直角三角形:

#include<iostream>
using namespace std;
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    if(a*a+b*b==c*c){
        cout<<"It can make a Right Triangle";
    }else{
        cout<<"It can't make a Right Triangle";
    } 
    return 0;
}

明白了这些,我们就可以来做一些看似很难的题目了:

题目描述

小蜗牛想从A位置(坐标为xa,ya)爬到B位置(坐标为xb,yb),要从A点到达B点似乎有很多条路可以选择。

但小蜗牛移动起来真的很慢,我们来帮它找一条最短的线路吧。

两点之间线段最短是一个公理。又名线段公理。

输入格式

共两行。

第一行是两个实数xa,ya,即A位置的坐标。

第二行是两个实数xb,yb,即B位置的坐标。

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

输出格式

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

样例数据

input

1.5 0
2.5 -1.5

output

1.803

首先分析题目,我们并不知道a、b点的x值和y值,所以先画图,如图二。

(图二)

我们可以把AB两点间的线段看成长边,补充一个直角三角形,如图三。

(图三)

这样横短边即等于A点的x值-B点的x值,竖短边即等于A点的y值-B点的y值,最后再取绝对值就行了。代码如下:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main(){
    double xa,ya,xb,yb,s,z,l;
    cin>>xa>>ya>>xb>>yb;
    if(xa<xb)s=xa-xb;
    else
        s=xb-xa;
    if(ya<yb)z=ya-yb;
    else
        z=yb-ya;
    l=sqrt(s*s+z*z);
    cout<<fixed<<setprecision(3)<<l;
    return 0; 
}

这样这道题就解开了。

求关注!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值