#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; } |