T1110-计算线段长度

原题链接: https://nanti.jisuanke.com/t/T1010

题目简述:

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

蒜头君老师告诉了你计算公式如下:

(XaXb)2+(YaYb)2\sqrt{(X_a - X_b)^2 + (Y_a - Y_b)^2}

输入格式

共两行。

第一行是两个实数 Xa,YaX_a, Y_a,即 AA 的坐标。

第二行是两个实数 Xb,YbX_b, Y_b ,即 BB 的坐标。

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

输出格式

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

评级: ★(农夫山泉题)

思路: 照着题意模拟,计算:(XaXb)2+(YaYb)2\sqrt{(X_a - X_b)^2 + (Y_a - Y_b)^2}

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    int x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    double ans = sqrt(abs(pow(x1-x2,2))+abs(pow(y1-y2,2)));
    cout<<fixed<<setprecision(3)<<ans<<endl;
    return 0;
}

未过,原因:精度错误。

改后代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    double x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    double ans = sqrt(abs(pow(x1-x2,2))+abs(pow(y1-y2,2)));
    cout<<fixed<<setprecision(3)<<ans<<endl;
    return 0;
}
posted @ 2019-08-04 12:07  littlefrog  阅读(408)  评论(0编辑  收藏  举报