poj 1491 Pi

#include <iostream>            //水题
#include <cmath>
using namespace std;
int gcd(int x,int y)
{
if (x==0||y==0)
return max(x,y);
int i=0,j=0;
while (x&1==0)
{
++i;
x
=x>>1;
}
while (y&1==0)
{
++j;
y
=y>>1;
}
i
=min(i,j);
while(1)
{
if(x<y)
swap(x,y);
x
-=y;
if(x==0)
return y<<i;
while(x&1==0)
{
x
=x>>1;
}
}
}
int main()
{
int n,data[100],s;
while(cin>>n&&n)
{
for(int i=0;i<n;++i)
cin
>>data[i];
s
=0;
for(int i=0;i<n;++i)
{
for(int j=i+1;j<n;++j)
if(gcd(data[i],data[j])==1)
s
++;
}
if(s==0)
printf(
"No estimate for this data set.\n");
else
printf(
"%.6f\n",sqrt(3.0*n*(n-1)/s));
}
return 0;
}

  

posted on 2011-07-22 20:03  sysu_mjc  阅读(158)  评论(0编辑  收藏  举报

导航