2012年1月10日 星期二

acm 10589 Area

[心得]  0.096

1.一開始就有注意到 int 最好不要和 浮點數比較的問題,所已全部變數宣告成double
   這樣在DEV C++裡雖然答案是對的 但是送上去會得到WA,所以只好參考網路上別人的答案把int 運算都 type casting 成double,才AC!
2.每個點與ABCD 的距離都小於半徑!



#include <stdio.h>


int main()
{
  
   int a,n;
   while(scanf("%d %d",&n,&a)==2)
   { 
      if(n==0 &&a==0)
         break;            
      int i,counter=0;            
      double x,y;
      for(i=0;i<n;i++)
      {
          scanf("%lf %lf",&x,&y);
          if((x*x)+(y*y)<= (double)a*a&&
             (a-x)*(a-x)+(y*y)<=(double)a*a&&
             (a-x)*(a-x)+(a-y)*(a-y)<=(double)a*a&&
             (x*x)+(y-a)*(y-a)<=(double)a*a)
             counter++;
             
      }
     
      printf("%.5lf\n",((double)counter/(double)n*(double)a*(double)a));             
   }
    return 0;
}

沒有留言:

張貼留言