| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
WA的不行了。。是精度问题还是方法错了?#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int n,i,j,k,t;
double x,y,tx,ty,a,b,c,Dis1,Dis2,pos[2][15],q,E,F,h,Dis,A,B;
int main()
{
scanf("%d",&t);
for(k=1;k<=t;k++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf",&pos[0][i]);
pos[1][i]=1.0;
}
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
tx=(pos[0][j]+pos[0][j+1])/2.0;
ty=(pos[1][j]+pos[1][j+1])/2.0;
Dis1=pos[1][j]-pos[1][j+1];
Dis2=pos[0][j]-pos[0][j+1];
if(fabs(Dis1)<1e-8)
{
x=tx;
y=sqrt(4.0-Dis2*Dis2/4.0)+pos[1][j];
}
else
{
h=sqrt(4.0-(Dis1*Dis1+Dis2*Dis2)/4.0);
Dis=sqrt(Dis1*Dis1+Dis2*Dis2);
A=asin(h/2.0);
B=atan(fabs(Dis1/Dis2));
y=pos[1][j]+2.0*sin(A-B);
x=pos[0][j]+2.0*cos(A-B);
}
pos[0][j]=x;
pos[1][j]=y;
}
}
printf("%d: %.4lf %.4lf\n",k,pos[0][0],pos[1][0]);
}
system("PAUSE");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator