Cod sursa(job #1737285)

Utilizator Gigel-FroneGigel Fronel Gigel-Frone Data 3 august 2016 17:19:25
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#define ll long long

using namespace std;

ll fact(int &x, int &y)
{
    unsigned ll p=1, k=1;
    if(x-y)
    {
        for(int i=y+1; i<=x; i++) p*=i;
        for(int i=1; i<=x-y; i++) k*=i;
        ll r=p/k;

        return r;
    }
    else return 1;
}

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

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

    if(n==0 || n==1) printf("%d", 0);
    else
    {
        int nr=0;
        if(n%2)
        {
            for(int i=0; i<=n/2; i++)
                if(fact(n, i)%p==0) nr++;
            nr=nr*2;
        }
        else
        {
            for(int i=0; i<=n/2-1; i++)
                if(fact(n, i)%p==0) nr++;
            nr=nr*2+1;
        }
        printf("%d", nr);
    }
}