| ||||||||||
| 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 | |||||||||
这个pi真精确啊In Reply To:我的为什么一直WA? Posted by:liberty752 at 2005-07-25 17:24:08 > #include "stdio.h"
> #include "math.h"
> #define pi 3.1415926535897932384626433832795028841971
> int d,n,c,g;
> int k,cs[1001];
> double average;
> void sort()
> {int i,j,temp;
> for(i=1;i<c;i++)
> for(j=1;j<c-i+1;j++)
> if(cs[j]>cs[j+1])
> {temp=cs[j];
> cs[j]=cs[j+1];
> cs[j+1]=temp;
> }
> }
> double max(double a,double b)
> {if(a>b) return a;
> else return b;
> }
>
> double sin1(int i,int j)
> { if(j==1)
> return sin(average*(n-cs[i])*pi/180);
> else
> return sin(average*(cs[j]-cs[i])*pi/180);
> }
> double comarea()
> {int i,j,t;
> int sign1,sign2;
> int mid;
> double area1,area2,aread;
> aread=0;
> for(t=3;t<=c-1;t++)
> {mid=(cs[1]+cs[t])/2;
> for(i=2;i<t&&cs[i]<mid;i++);
> if(i>=t)
> area1=sin1(1,i-1)+sin1(i-1,t);
> else
> area1=max(sin1(1,i)+sin1(i,t),sin1(1,i-1)+sin1(i-1,t));
> mid=(cs[t]+n)/2;
> for(j=t+1;j<c+1&&cs[j]<mid;j++);
> if(j>=c+1)
> area2=sin1(t,j-1)+sin1(j-1,1);
> else
> area2=max(sin1(t,j)+sin1(j,1),sin1(t,j-1)+sin1(j-1,1));
> if(area1+area2>aread)
> aread=area1+area2;
> }
> return (0.125*d*d*aread);
> }
>
>
> int main()
> {int scenario;
> int i,j,count=0;
> double area;
> scanf("%d",&scenario);
> while(scenario--)
> {scanf("%d%d%d%d",&d,&n,&c,&g);
> for(i=1,k=0;k<c;i++,k++)
> cs[i]=(g*k)%n;
> sort();
> average=360*1.0/n;
> area=comarea();
> printf("Scenario #%d:\n",++count);
> printf("%.6lf\n\n",area);
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator