Cod sursa(job #2738344)

Utilizator stefantagaTaga Stefan stefantaga Data 5 aprilie 2021 18:36:43
Problema Permutari2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#define MOD 10007
using namespace std;
ifstream fi("permutari2.in");
ofstream fo("permutari2.out");
typedef struct lin{int A[305];} LIN;
int n,i,k,j,ind,Fact[305];
LIN Aux,Dp,C;

void inm(LIN &A, LIN &B, LIN &R)
{
    int i,j;
    for(i=0; i<=n; i++)
        C.A[i]=0;
    for(i=0; i<=n; i++)
        for(j=0; j<=i; j++)
            C.A[i]=(C.A[i]+A.A[j]*B.A[i-j])%MOD;
    R=C;
}

void p(int b)
{
    int i;
    for(i=0; (1<<i)<=b; i++)
    {
        if((1<<i)&b)
            inm(Dp,Aux,Dp);
        inm(Aux,Aux,Aux);
    }
}

int main()
{
    fi>>n>>k;
    Fact[0]=1;
	for(i=1; i<=n; i++)
    {
        Fact[i]=(i*Fact[i-1])%MOD;
        Aux.A[i]=Fact[i];
        for(j=1; j<i; j++)
            Aux.A[i]=(Aux.A[i]-(Aux.A[j]*Fact[i-j])%MOD+MOD)%MOD;
    }
    Dp.A[0]=1;
    p(k);
    fo<<Dp.A[n]<<"\n";
	fi.close();
    fo.close();
    return 0;
}