Cod sursa(job #1146245)

Utilizator PatrikStepan Patrik Patrik Data 18 martie 2014 20:27:39
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
    #include<cstdio>
    #include<iostream>
    using namespace std;
    int R , D , rez , d2, d3 , d5 , p2 , p3 ,p5;

    void desc(int n , int k);
    void find(int n , int semn)
    {
        while(n%2 == 0) n/=2 , p2 += semn;
        while(n%3 == 0) n/=3 , p3 +=semn;
        while(n%5 == 0) n/=5 , p5 += semn;
    }

    int main()
    {
        freopen("pascal.in" , "r" , stdin );
        freopen("pascal.out" , "w" , stdout );
        scanf("%d%d" , &R , &D );
        while(D%2==0)d2++,D/=2;
        while(D%3==0)d3++,D/=3;
        while(D%5==0)d5++,D/=5;
        for(int i = 1 ; i <= (R-1)/2 ; ++i )
        {
            desc(R,i);
            rez += (p2 >= d2 && p3 >= d3 && p5 >= d5);
        }
        rez = rez*2;
        if((R-1)%2)
        {
            desc(R,(R-1)/2+1);
            rez += (p2 >= d2 && p3 >= d3 && p5 >= d5);
        }
        printf("%d" , rez);
        return 0;
    }

    void desc(int n , int k)
    {
        find(n-k+1,1);
        find(k,-1);
    }