Cod sursa(job #1825537)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 9 decembrie 2016 12:51:57
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <cstdio>

using namespace std;

int puteri[6];

int main()
{
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);
    int r,d,i,nr = 0,p;
    scanf("%d%d",&r,&d);
    for (i=2; i<=r; i++)
    {
        if (d % 2 == 0)
        {
            p = 2;
            while (p <= r - i + 2)
            {
                puteri[2] += (r - i + 2) / p - i / p;
                p <<= 1;
            }
        }
        if (d % 3 == 0)
        {
            p = 3;
            while (p <= r - i + 2)
            {
                puteri[3] += (r - i + 2) / p - i / p;
                p *= 3;
            }
        }
        if (d == 5)
        {
            p = 5;
            while (p <= r - i + 2)
            {
                puteri[5] += (r - i + 2) / p - i / p;
                p *= 5;
            }
        }
        switch (d)
        {
        case 2:
            nr += (puteri[2] > 0);
            break;
        case 3:
            nr += (puteri[3] > 0);
            break;
        case 4:
            nr += (puteri[2] > 1);
            break;
        case 5:
            nr += (puteri[5] > 0);
            break;
        case 6:
            nr += (puteri[2] > 0 && puteri[3] > 0);
            break;
        }
    }
    printf("%d",nr);
    return 0;
}