Cod sursa(job #940100)

Utilizator gbi250Gabriela Moldovan gbi250 Data 15 aprilie 2013 16:59:23
Problema Pascal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <iostream>
using namespace std;
int r, nr, d, i, f, p;

int exponent(int r, int d)
{
    int f=0, p;
    p=d;
    while(r/p)
    {
        f+=r/p;
        p*=d;
    }
    return f;
}

int main()
{
    freopen("pascal.in", "r", stdin);
    freopen("pascal.out", "w", stdout);
    scanf("%d %d", &r, &d);
    for(i=0;i<=r/2;++i)
    {
        f=0;
        if(d==2||d==3||d==5)
            f=exponent(r, d)-exponent(i, d)-exponent(r-i, d);
        else if(d==4)
        {
            f=exponent(r, 2)-exponent(i, 2)-exponent(r-i, 2);
            f*=2;
        }
        else if(d==6)
            f=min(exponent(r, 2), exponent(r, 3))-min(exponent(i, 2), exponent(i, 3))-min(exponent(r-i, 2), exponent(r-i, 3));

        if(f>0)
            nr++;
    }
    if(r%2)
        printf("%d\n", 2*nr);
    else
        printf("%d\n", 2*nr-1);
    return 0;
}