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