Pagini recente » Concursuri organizate de infoarena | Cod sursa (job #2801647) | Cod sursa (job #2452987) | Cod sursa (job #1381160) | Cod sursa (job #2738725)
#include <bits/stdc++.h>
#define MOD 10007
using namespace std;
ifstream fin("permutari2.in");
ofstream fout("permutari2.out");
const int NMAX(305);
typedef long long ll;
ll dp[NMAX], fact[305], rez[305], aux[305];
int n, k;
void inm(ll a[305], ll b[305], ll c[305]){
memset(aux, 0, sizeof(aux));
for(int i = 0; i <= n; ++i)
for(int j = 0; j <= i; ++j)
aux[i] = (aux[i] + b[j] * c[i - j]) % MOD;
for(int i = 0; i <= n; ++i)
a[i] = aux[i];
}
void xPow(int k){
rez[0] = 1;
while(k){
if(k & 1)
inm(rez, dp, rez);
inm(dp, dp, dp);
k >>= 1;
}
}
int main()
{
fact[0] = 1;
for(int i = 1; i <= 300; ++i)
fact[i] = fact[i - 1] * i % MOD;
fin >> n >> k;
for(int i = 1; i <= n; ++i){
dp[i] = fact[i];
for(int j = i - 1; j >= 1; --j)
dp[i] = (dp[i] - (dp[j] * fact[i - j]) % MOD + MOD) % MOD;
}
xPow(k);
fout << rez[n] << '\n';
return 0;
}