Advertisement
a53

probleme

a53
Aug 19th, 2020 (edited)
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. #include <fstream>
  2. #define M 1000003
  3. using namespace std;
  4.  
  5. long long Invers_Modular(long long x)
  6. {
  7. long long InvM=1;
  8. int p=M-2;
  9. while(p>0)
  10. {
  11. if(p%2==1)
  12. InvM=InvM*x%M;
  13. x=x*x%M;
  14. p=p/2;
  15. }
  16. return InvM;
  17. }
  18.  
  19. int main()
  20. {
  21. int n,m,k,s;
  22. ifstream f("probleme.in");
  23. f>>n>>m>>k>>s;
  24. f.close();
  25. long long F[M+2],solutie=0;
  26. F[0]=1;
  27. for(int i=1;i<=M;++i)
  28. F[i]=F[i-1]*i%M;
  29. for(int i=0;i<=min(m-s,k-s);++i) /// Calcul suma C(m,s)*C(n-m,k-s)+C(m,s+1)*C(n-m,k-s-1)+...+C(m,min(m,k-m))*C(n-m,k-min(m,k))
  30. {
  31. if(n-m>=k-s-i)
  32. {
  33. /// In cate moduri se pot alege s+i problemele usoare din cele m
  34. long long Numarator=F[m],Numitor=F[s+i]*F[m-s-i]%M;
  35. long long Usoare=Numarator*Invers_Modular(Numitor)%M;
  36. /// In cate moduri se pot alege k-s-i probleme dificile din cele n-m
  37. long long Dificile_Numarator=F[n-m],Dificile_Numitor=F[k-s-i]*F[n-m-k+s+i]%M;
  38. long long Dificile=Dificile_Numarator*Invers_Modular(Dificile_Numitor)%M;
  39. solutie=(solutie+Usoare*Dificile%M)%M;
  40. }
  41. }
  42. ofstream g("probleme.out");
  43. g<<solutie%M;
  44. g.close();
  45. return 0;
  46. }
  47.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement