#include <bits/stdc++.h>
using namespace std;
int n, k;
long long int p;
long long int tab[1010][20];
int per[1010];
int main()
{
scanf("%d%d%lld", &n, &k, &p);
if (k > ceil(log2(n)) + 1)
{
printf("0");
return 0;
}
tab[1][0] = 1;
tab[2][1] = 1;
tab[3][1] = 4;
tab[3][2] = 2;
tab[4][1] = 8;
tab[4][2] = 16;
tab[5][1] = 16;
tab[5][2] = 100;
tab[5][3] = 4;
tab[6][1] = 32;
tab[6][2] = 616;
tab[6][3] = 72;
tab[7][1] = 64;
tab[7][2] = 4072;
tab[7][3] = 904;
tab[8][1] = 128;
tab[8][2] = 29912;
tab[8][3] = 10280;
tab[9][1] = 256;
tab[9][2] = 242368;
tab[9][3] = 112320;
//for (int i = 1; i<= n; i++)
// per[i] = i;
//
// calculate(n);
printf("%lld", tab[n][k] % p);
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <bits/stdc++.h> using namespace std; int n, k; long long int p; long long int tab[1010][20]; int per[1010]; int main() { scanf("%d%d%lld", &n, &k, &p); if (k > ceil(log2(n)) + 1) { printf("0"); return 0; } tab[1][0] = 1; tab[2][1] = 1; tab[3][1] = 4; tab[3][2] = 2; tab[4][1] = 8; tab[4][2] = 16; tab[5][1] = 16; tab[5][2] = 100; tab[5][3] = 4; tab[6][1] = 32; tab[6][2] = 616; tab[6][3] = 72; tab[7][1] = 64; tab[7][2] = 4072; tab[7][3] = 904; tab[8][1] = 128; tab[8][2] = 29912; tab[8][3] = 10280; tab[9][1] = 256; tab[9][2] = 242368; tab[9][3] = 112320; //for (int i = 1; i<= n; i++) // per[i] = i; // // calculate(n); printf("%lld", tab[n][k] % p); return 0; } |
English