Cod sursa(job #1146180)

Utilizator PatrikStepan Patrik Patrik Data 18 martie 2014 19:40:17
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
    #include<cstdio>
    #include<iostream>
    using namespace std;
    int R , D , rez , nr , num  , nr1 , num1;

    int find(int d , int n);

    int main()
    {
        freopen("pascal.in" , "r" , stdin );
        freopen("pascal.out" , "w" , stdout );
        scanf("%d%d" , &R , &D );
        if(D == 4)
        {
            nr = find(2,R);
            for(int i = 1 ; i < R ; ++i )
            {
                num = find(2,R-i) + find(2,i);
                rez +=(nr-num>1);
            }
        }
        else
            if(D == 6)
        {
            nr = find(2,R);
            nr1 = find(3,R);
            for(int i = 1 ; i < R ; ++i )
            {
                num = find(2,R-i)+find(2,i);
                num1 = find(3,R-i)+find(3,i);
                rez += (nr1 > num1 && nr > num);
            }
        }
        else
        {
            nr = find(D,R);
            for(int i = 1 ; i< R ; ++i )
            {
                num = find(D,R-i)+find(D,i);
                rez += (nr> num);
            }
        }
        printf("%d" , rez);
        return 0;
    }

    int find(int d , int n)
    {
        int aux = d , ret = 0;
        while(aux <= n)
        {
            ret += n/aux;
            aux *=d;
        }
        return ret;
    }