#include "futbol.h"
#include "message.h"
#include <bits/stdc++.h>
#define f first
#define s second
#define LL long long
#define ALL(V) V.begin(),V.end()
#define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define endl "\n"
#define debug(x) cout<<#x<<": "<<x<<endl
using namespace std;
const LL N=1e7+69, base=1024*1024;
long long n,k,p;
long long odw(long long a) {
a%=p;
long long b=p-2;
long long re=1;
while(b) {
if(b%2==1) re*=a;
a*=a;
b/=2;
a%=p;
re%=p;
}
return re;
}
int32_t main(void) {
boost;
if(MyNodeId()!=0) return 0;
n=GetN();
k=GetK();
p=GetP();
long long licznik=1;
for(int i=1;i<=n;i++) {
licznik*=i;
licznik%=p;
}
long long mianownik1=licznik;
long long mianownik2=1;
long long wynik=0;
for(int i=n;i>=0;i--) {
if(i<=k) wynik+=licznik*odw(mianownik1*mianownik2);
wynik%=p;
mianownik2*=(n-i+1);
mianownik1*=odw(i);
mianownik1%=p;
mianownik2%=p;
}
cout<<wynik<<endl;
}
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 | #include "futbol.h" #include "message.h" #include <bits/stdc++.h> #define f first #define s second #define LL long long #define ALL(V) V.begin(),V.end() #define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define endl "\n" #define debug(x) cout<<#x<<": "<<x<<endl using namespace std; const LL N=1e7+69, base=1024*1024; long long n,k,p; long long odw(long long a) { a%=p; long long b=p-2; long long re=1; while(b) { if(b%2==1) re*=a; a*=a; b/=2; a%=p; re%=p; } return re; } int32_t main(void) { boost; if(MyNodeId()!=0) return 0; n=GetN(); k=GetK(); p=GetP(); long long licznik=1; for(int i=1;i<=n;i++) { licznik*=i; licznik%=p; } long long mianownik1=licznik; long long mianownik2=1; long long wynik=0; for(int i=n;i>=0;i--) { if(i<=k) wynik+=licznik*odw(mianownik1*mianownik2); wynik%=p; mianownik2*=(n-i+1); mianownik1*=odw(i); mianownik1%=p; mianownik2%=p; } cout<<wynik<<endl; } |
English