The answer fits in 64 bit range.
The calculations done are of the form D = (A*B) / C. Here {A,B,C,D}
can be represented are 64 bit integers.
But we cannot say that A*B will be a 64 bit integer and will cause
overflows.

To avoid this,
Let's say G=GCD(A,C). Then the above can be written as D = ((A/G) *
B)/ (C/G).
Now, C/G will divide B.
So, our calculation becomes, D= A/G; D= D * (B/(C/G));
You can that maximum value here is from the set {A/G , B/(C/G) , D}.
All of which are 64-bit integers.

C function :
typedef unsigned long long ULL
ULL bin(ULL n,ULL k)
{
        if(n<k) return 0;
        if(k>n-k) k=n-k;
        ULL ans=1;
        for(ULL i=1;i<=k;i++)
        {
                ULL d=gcd(p,i);
                ans/=d;
                ans*=(n-i+1)/(i/d);
        }
        return ans;
}


On Jun 21, 10:57 pm, kartik sachan <kartik.sac...@gmail.com> wrote:
> hey anika here n<=1 and n>=0 so its 1 only

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to