#include <bits/stdc++.h> #include "message.h" #include "futbol.h" using namespace std; long long n, k, mod; long long binpow(long long x, long long a) { if (a == 0) return 1LL; if (a & 1) { return x * binpow(x, a - 1) % mod; } else { long long t = binpow(x, a / 2); return t * t % mod; } } long long inverse(long long x) { return binpow(x, mod - 2); } int main() { int nodes = NumberOfNodes(); int myNode = MyNodeId(); if (myNode == 0) { n = GetN(); k = GetK(); mod = GetP(); long long ans = 0; long long nf = 1; for (int i = 2; i <= n; i++) { nf = (nf * i) % mod; } long long nk = n; long long nkf = 1; for (int i = 2; i <= nk; i++) { nkf = (nkf * i) % mod; } long long curr = 1; for (int x = 0; x <= k; x++) { ans = (ans + curr) % mod; curr = curr * inverse(x+1) % mod; curr = curr * (n-x) % mod; } cout << ans << endl; } 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 52 53 54 55 56 | #include <bits/stdc++.h> #include "message.h" #include "futbol.h" using namespace std; long long n, k, mod; long long binpow(long long x, long long a) { if (a == 0) return 1LL; if (a & 1) { return x * binpow(x, a - 1) % mod; } else { long long t = binpow(x, a / 2); return t * t % mod; } } long long inverse(long long x) { return binpow(x, mod - 2); } int main() { int nodes = NumberOfNodes(); int myNode = MyNodeId(); if (myNode == 0) { n = GetN(); k = GetK(); mod = GetP(); long long ans = 0; long long nf = 1; for (int i = 2; i <= n; i++) { nf = (nf * i) % mod; } long long nk = n; long long nkf = 1; for (int i = 2; i <= nk; i++) { nkf = (nkf * i) % mod; } long long curr = 1; for (int x = 0; x <= k; x++) { ans = (ans + curr) % mod; curr = curr * inverse(x+1) % mod; curr = curr * (n-x) % mod; } cout << ans << endl; } return 0; } |