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