#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<cstring>
#include <algorithm>
#define inf 0x7fffffff
#define N 10000
#define MIN 1e-11
#define M 100
#define LL long long
using namespace std;
//int n,k,h,t,m;
int ma[N];
void fen1(int k)
{
int s=sqrt(k);
for(int i=2; i<=s; i++)
{
while(!(k%i))
{
ma[i]++;
k/=i;
}
}
if(k!=1)
ma[k]++;
}
void fen2(int k)
{
int s=sqrt(k);
for(int i=2; i<=s; i++)
{
while(!(k%i))
{
ma[i]--;
k/=i;
}
}
if(k!=1)
ma[k]--;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("ex.in","r",stdin);
#endif
// scanf("%d",&t);
long long p,q,r,s;
while(scanf("%lld",&p)!=EOF)
{
memset(ma,0,sizeof(ma));
scanf("%lld%lld%lld",&q,&r,&s);
double ans=1;
int suba=0,subb=0;
LL i=p,j=p-q;
for(; i>q; i--)
{
fen1(i);
}
i=r-s;
j=r;
for(; j>s; j--)
{
fen2(j);
}
int minv=min(p-q,r-s);
int maxv=max(p-q,r-s);
int flag;
if(p-q>r-s)
flag=0;
else
flag=1;
if(flag)
{
for(int k=maxv; k>minv; k--)
fen1(k);
}
else
{
for(int k=maxv; k>minv; k--)
fen2(k);
}
for(int i=2; i<N; i++)
if(ma[i]>0)
{
for(int j=0; j<ma[i]; j++)
ans*=i;
}
else if(ma[i]<0)
{
for(int j=ma[i]; j<0; j++)
ans/=i;
}
printf("%.5lf\n",ans);
}
return 0;
}
10375 - Choose and divide
最新推荐文章于 2020-05-11 20:27:55 发布