Cod sursa(job #2075147)

Utilizator VladGhetinaVlad Ghetina VladGhetina Data 25 noiembrie 2017 11:31:56
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <cstdio>

using namespace std;

#define IN "pascal.in"
#define OUT "pascal.out"

int n , d , res;

int Desc(int t , int u)
{
    int sol = 0;
    int x = u;

    while( x <= t )
    {
        sol += t/x;
        x *= u;
    }

    return sol;
}

int main()
{
     freopen ( IN , "r" , stdin );
     freopen ( OUT , "w" , stdout );

     scanf ( "%d%d" , &n , &d );

     int i , numarator , a , b;
     int dif = 0;

     for ( i = 1 ; i <= n/2 ; i ++ )
     {
         numarator = n;
         a = i , b = n-i;
         if ( d == 2 ){
            if ( Desc(numarator,2) > Desc(a,2)+Desc(b,2) )
                res++;
            if ( i == n/2 )
                dif = 1;
         }
         else if ( d == 3 ){
             if ( Desc(numarator,3) > Desc(a,3)+Desc(b,3))
                res++;

            if ( i == n/2 )
                dif = 1;
         }
         else if ( d == 5 ){
             if ( Desc(numarator,5) > Desc(a,5)+Desc(b,5))
                res++;
            if ( i == n/2 )
                dif = 1;
         }
         else if ( d == 4 )
         {
             if ( Desc(a,2)+Desc(b,2)-Desc(numarator,2) >= 2 )
                res++;

             if ( i == n/2 )
                dif = 1;
         }
         else if ( d == 6 )
         {
             if ( (Desc(numarator,2) > Desc(a,2)+Desc(b,2) ) && (Desc(numarator,3) > Desc(a,3)+Desc(b,3)) )
                res++;

             if ( i == n/2 )
                dif = 1;
         }

     }

     printf ( "%d" , res*2-dif );


}