#include <bits/stdc++.h> #include "message.h" #include "futbol.h" using namespace std; typedef long long ll; ll n, k, i, x, sil, out, mod; ll pot (ll a, int b) { if (b==0) return 1; ll res = pot(a, b/2); (res*=res)%=mod; if (b%2==1) (res*=a)%=mod; return res; } ll odw (ll a){ return pot(a, mod-2); } int main () { if (MyNodeId()!=0) return 0; n = (ll)(GetN()); k = (ll)(GetK()); mod = (ll)(GetP()); //scanf("%lld%lld%lld",&n,&k,&mod); sil=1; for (i=1; i<=n; i++) (sil*=i)%=mod; x = odw(sil); (out+=x)%=mod; for (i=1; i<=k; i++) { (x*=(n-i+1))%=mod; (x*=odw(i))%=mod; (out+=x)%=mod; } (out*=sil)%=mod; printf ("%lld\n",out); 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 | #include <bits/stdc++.h> #include "message.h" #include "futbol.h" using namespace std; typedef long long ll; ll n, k, i, x, sil, out, mod; ll pot (ll a, int b) { if (b==0) return 1; ll res = pot(a, b/2); (res*=res)%=mod; if (b%2==1) (res*=a)%=mod; return res; } ll odw (ll a){ return pot(a, mod-2); } int main () { if (MyNodeId()!=0) return 0; n = (ll)(GetN()); k = (ll)(GetK()); mod = (ll)(GetP()); //scanf("%lld%lld%lld",&n,&k,&mod); sil=1; for (i=1; i<=n; i++) (sil*=i)%=mod; x = odw(sil); (out+=x)%=mod; for (i=1; i<=k; i++) { (x*=(n-i+1))%=mod; (x*=odw(i))%=mod; (out+=x)%=mod; } (out*=sil)%=mod; printf ("%lld\n",out); return 0; } |