Cod sursa(job #1289190)

Utilizator RaduVisanRadu Visan RaduVisan Data 9 decembrie 2014 17:12:52
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
using namespace std;

int R, D, Pow2, Pow3, Pow5, Ans;

int main()
{
    freopen("pascal.in", "r", stdin);
    freopen("pascal.out", "w", stdout);

    scanf("%i %i", &R, &D);

    for(int i = 1; i <= (R + 1) / 2; ++ i)
    {
        int X = R - i + 1;
        while(X % 2 == 0) X /= 2, Pow2 ++;
        while(X % 3 == 0) X /= 3, Pow3 ++;
        while(X % 5 == 0) X /= 5, Pow5 ++;

        X = i;
        while(X % 2 == 0) X /= 2, Pow2 --;
        while(X % 3 == 0) X /= 3, Pow3 --;
        while(X % 5 == 0) X /= 5, Pow5 --;

        bool OK = 0;

        if(D == 2 && Pow2 >= 1) OK = 1;
        else if(D == 3 && Pow3 >= 1) OK = 1;
        else if(D == 4 && Pow2 >= 2) OK = 1;
        else if(D == 5 && Pow5 >= 1) OK = 1;
        else if(D == 6 && Pow2 >= 1 && Pow3 >= 1) OK = 1;

        if(OK)
        {
            if(R % 2 == 0 && (R + 1) / 2 == i) Ans ++;
            else Ans += 2;
        }
    }

    printf("%i\n", Ans);
}