Cod sursa(job #1953737)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 4 aprilie 2017 23:33:25
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
#define ll unsigned long long
#define Nmax 5000001
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
ll fct[Nmax];
int phi[7]={0,0,1,2,2,4,2};
int M;
ll put(ll a, int n)
{
    ll r=1;
    while(n)
    {
        if(n%2)
            r=(r*a)%M;
        n/=2;
        a=(a*a)%M;
    }
    return r;
}
int main()
{int n,d;
f>>n>>d;
M=d;
d=phi[d];
fct[0]=1;
for(int i=1;i<=n;i++)
    fct[i]=(fct[i-1]*i)%M;
ll p1,p2;
p1=fct[n];
ll nr=0;
for(int i=0;i<=n/2;i++)
{
    p2=(fct[n-i]*fct[i])%M;
    p2=put(p2,d-1);
    p2=(p1*p2)%M;
    if(!p2) nr++;
}
g<<nr;

    return 0;
}