【题目分析】
更相减损术+暴力。
【代码】
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
int phi[2010],gcd[2010][2010];
inline int fgcd(int a,int b)
{return b==0?a:fgcd(b,a%b);}
int main()
{
int i,j,k,p,q,a,b;
ll x,y,z,ans;
phi[1]=1;
for (i=2;i<=2000;i++)
if (!phi[i])
for (j=i;j<=2000;j+=i)
{
if (!phi[j]) phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
for (i=1;i<=2000;i++)
for (j=1;j<=2000;j++)
gcd[i][j]=fgcd(i,j);
while (scanf("%d%d",&a,&b)&&a)
{
ans=0;
for (i=1;i<=a;i++)
{
ans+=(ll)phi[i]*(b/i);
for (j=1;j<=b%i;j++)
if (gcd[i][j]==1)
ans++;
}
printf("%.7f\n",((double)ans*4+4)/((2*(double)a+1)*(2*b+1)-1));
}
}