Advertisement
a53

fmat

a53
Mar 9th, 2020
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. #include <fstream>
  2. #define ULL unsigned long long int
  3. using namespace std;
  4. int p;
  5. ULL F[1000001];
  6.  
  7. void fact()
  8. {
  9. F[0]=1;
  10. for(int i=1;i<=1000000;++i)
  11. F[i]=((i%p)*(F[i-1]%p))%p;
  12. return;
  13. }
  14.  
  15. ULL powr(ULL b,ULL e)
  16. {
  17. if(e==0)
  18. return 1;
  19. if(e%2==0)
  20. return powr(((b%p)*(b%p))%p,e/2)%p;
  21. return ((b%p)*powr(((b%p)*(b%p))%p,(e-1)/2)%p)%p;
  22. }
  23.  
  24. ULL Comb(ULL n,ULL k)
  25. {
  26. return ((F[n]%p)*(((powr(F[n-k]%p,p-2)%p)*(powr(F[k],p-2)%p))%p))%p;
  27. }
  28.  
  29. int main()
  30. {
  31. int t;
  32. ifstream f("fmat.in");
  33. f>>t>>p;
  34. fact();
  35. ofstream g("fmat.out");
  36. int m,n,c,k;
  37. while(t--)
  38. {
  39. f>>m>>n>>c>>k;
  40. if(k>n)
  41. g<<"0\n";
  42. else
  43. g<<(((Comb(n,k)%p)*((powr(c%p,k)%p)*(powr((powr(c%p,m)%p-c%p)%p,n-k))%p))%p)%p<<'\n';
  44. }
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement