2013年9月17日 星期二

TIOJ 1005 圓周率問題

[純粹計算= =]

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int gcd(int a,int b)
{

if((a-1)*(b-1)==0)
return 1;
if(a<b){a=a+b;b=a-b;a=a-b;} //let a>=b
if(a%b==0)
return b;
return gcd(b,a%b);
}
int main()
{
while(1)
{
int N;  scanf("%d",&N);
if(N==0) break;
int allcnt=N*(N-1)/2;
int dprcnt=0;
int inp[51];
for(int lx=1;lx<=N;lx++)
scanf("%d",&inp[lx]);
for(int lx=1;lx<=N;lx++)
{
for(int ly=1;ly<=N;ly++)
{
if(lx==ly) continue;
if(gcd(inp[lx],inp[ly])==1)
dprcnt++;
}
}
dprcnt/=2;
if(dprcnt==0)
printf("No estimate for this data set.\n");
else 
printf("%.6f\n",sqrt((double)allcnt*6/(double)dprcnt));
}
return 0;
}


沒有留言:

張貼留言