Grey_Wing @ 2023-07-11 23:13:39
#include<bits/stdc++.h>
#define ll long long
using namespace std;
template <typename T>
void in(T &x) {
char c=getchar();
int f=1;
while((c>'9'||c<'0')&&c!='-'){
c=getchar();
}
if(c=='-'){
f=-1;
c=getchar();
}
for(x=0;c>='0'&&c<='9';c=getchar()) {
x=x*10+c-'0';
}
x*=f;
}
double work(double x1,double y11,double x2,double y2){
return sqrt((x2-x1)*(x2-x1)+(y2-y11)*(y2-y11));
}
int main(){
double x1,y11,x2,y2,x3,y3;
in(x1);in(y11);in(x2);in(y2);in(x3);in(y3);
double x, y, z;
x=work(x1,y11,x2,y2);
y=work(x1,y11,x3,y3);
z=work(x3,y3,x2,y2);
double ans=x+y+z;
printf("%.2lf\n",ans);
return 0;
}
为什么这个样例我老是过不了?
23.234 12.123
-99.99 99.99
-1 -100
正解:489.20
我的答案:407.07
by Terrible @ 2023-07-12 01:36:45
@xjy20100311
你的读入程序只会将小数部分读成下一个数的整数部分。实际上只读进去了 23.234 12.123 -99.99
请换成
template <typename T>
void in(T &x) {
cin>>x;
}
(莫名喜感,高端的操作往往只需要最简谱的方式实现)
另外你可以尝试使用 hypot
这个函数,
by Grey_Wing @ 2023-07-12 22:50:02
@Terrible
谢谢大佬!