@[Stevehim](/user/759274)
```
printf("%.2Lf", ans);
```
printf真的可以这么用吗?qwq
by One_JuRuo @ 2023-09-14 20:07:38
@[One_JuRuo](/user/86507) 啊这个不是```long double```的吗awa,我在上面写了```#define double long double```的QAQ
by Stevehim @ 2023-09-14 20:15:15
@[Stevehim](/user/759274) 没用过QWQ
by One_JuRuo @ 2023-09-14 22:33:27
@[Stevehim](/user/759274)
试试删掉 ```ios::sync_with_stdio(false);```,因为这是兼容 ```cin``` ```cout``` 和 ```scanf``` ```printf```。加了这个就不能混用了
by One_JuRuo @ 2023-09-14 22:38:58
@[Stevehim](/user/759274)
我没用 ```long double```,思路还是和你一样,可能是有些细节不一样,这是我的代码,可以参考一下:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct node{double x,y;}p[100005],s[100005];
int n,cnt,top;
double ch,k,r,l,phi,a,b,c;
bool cmp(node a,node b){return (a.x!=b.x)?a.x<b.x:a.y<b.y;}
double cross(node a,node b,node c){return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);}
double dis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
void add(double a,double b,double c)
{
double dx=cos(c+phi)*l,dy=sin(c+phi)*l;
p[++cnt].x=a+dx,p[cnt].y=b+dy;
p[++cnt].x=a-dx,p[cnt].y=b-dy;
dx=cos(c-phi)*l,dy=sin(c-phi)*l;
p[++cnt].x=a+dx,p[cnt].y=b+dy;
p[++cnt].x=a-dx,p[cnt].y=b-dy;
}
void andrew()
{
sort(p+1,p+cnt+1,cmp);
for(int i=1;i<=cnt;i++)
{
while(top>1&&cross(s[top-1],s[top],p[i])<=0)top--;
s[++top]=p[i];
}
int k=top;
for(int i=cnt-1;i>=1;i--)
{
while(top>k&&cross(s[top-1],s[top],p[i])<=0)top--;
s[++top]=p[i];
}
double ans=0;
for(int i=1;i<top;i++) ans+=dis(s[i],s[i+1]);
ans+=dis(s[top],s[1]);
printf("%.2f",ans+3.141592653589793*2*r);
}
int main()
{
cin>>n>>ch>>k>>r;
ch-=2*r,k-=2*r,l=sqrt(ch*ch+k*k)/2,phi=atan(ch/k);
for(int i=1;i<=n;i++) scanf("%lf%lf%lf",&a,&b,&c),add(a,b,c);
andrew();
}
```
by One_JuRuo @ 2023-09-14 22:46:23
@[One_JuRuo](/user/86507) 感谢!发现问题了,我一开始的a和b没减去2rQAQ
by Stevehim @ 2023-09-15 07:10:27
@[Stevehim](/user/759274) QAQ
by One_JuRuo @ 2023-09-15 07:25:46