• 题解
  • 【异世界日记#1】牧人饮马

  • @ 2024-1-16 20:52:42

郑天皓 (zhengtianhao) LV 10

<"题解">

大家都知道,(​不知道别看了)勾股定理就是a * a+b * b=c* c(直角三角形)所以c=√(a* a+b *b)

构造一个点a和点b,a点坐标为(X1,Y1),b点坐标为(X2,Y2)用点a和点b互相做垂直线到c点,坐标为(X2,Y1)所以ac* ac+bc * bc=ab* ab

下面直接写结论:

  • [ac* ac=(X2-X1)* (X2-X1) ]
  • [bc* bc=(Y2-Y1)* (Y2-Y1) ] 重点来了!:

ab=√((X2-X1)*(X2-X1)+((Y2-Y1) *(Y2-Y1)))!!!!!!!!!

重点又来了!:

  • [关于x轴对称的两个点的坐标,横坐标相同,纵坐标相反. ]
  • [ 关于y轴对称的两个点的坐标,横坐标相反,纵坐标相同.]
  • [关于原点对称的两个点的坐标横纵坐标都相反。]

把a点做对称点后直接算距离就行

废话不多说,直接上代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    double x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    if(y1*y2>0){
        y1=-y1;
    }
    printf("%.3lf",sqrt(pow(x2-x1,2)+pow(y2-y1,2)));
    return 0;
}

能否点个赞? 球球了~ QWQ------ZTH

5 条评论

  • 1