Tuesday, May 3, 2011

10375 - Choose and divide


#include<iostream>
#include<cmath>
#include<stdio.h>
long double NCR(long int n,long int k);
long gcd (long a, long b) { return b?gcd(b,a%b):a; }
using namespace std;
int main()
{
   
    long int p,q,r,s,i;
    long double res;
    //freopen("in.txt","r",stdin);
    while(scanf("%ld%ld%ld%ld",&p,&q,&r,&s)==4)
    {
        res=0;
        if(q<p-q)q=p-q;
        if(s<r-s)s=r-s;
        if(p>r)
            for(i=r+1;i<=p;i++)res+=log(i);
        else
            for(i=p+1;i<=r;i++)res-=log(i);
        if(s>q)
            for(i=q+1;i<=s;i++)res+=log(i);
        else
            for(i=s+1;i<=q;i++)res-=log(i);
        if(r-s>p-q)
            for(i=p-q+1;i<=r-s;i++)res+=log(i);
        else
            for(i=r-s+1;i<=p-q;i++)res-=log(i);
        res=exp(res);
        printf("%0.5Lf\n",res);
    }
    return 0;
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.