niedziela, 20 maja 2012

najmłodsza cyfra silni


int ld(int n){
        int q, t, x, z, ai;
        q=0; t=0; x=0;
        if( ((n%5)&1)==0 ) t=n%5;
        n /= 5;
        while(n){
                ai=n%5; n/=5;
                q+=ai; x+=q;
                if((ai&1)==0)
                        t += ai; }
        z = (x+t/2)%4; 
        if( z==0 ) return 6;
        else return 1<<z;}

niedziela, 13 maja 2012

binomial


unsigned long binomial (int n, int m) { 
        unsigned long cnm = 1UL; 
        int i, f; 
        if (m*2 >n) 
                m = n-m; 
        for (i=1 ; i <= m; n--, i++) { 
                if ((f=n) % i == 0) 
                        f /= i; 
                else 
                        cnm /= i; 
                cnm *= f; } 
        return cnm; }