Combothermal

Untitled

Dec 30th, 2023
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. void solve() {
  2. ll N, P, K; cin >> N >> P >> K;
  3.  
  4. cout << 1 << " ";
  5. mi ans = 1;
  6. int numOrd = 0;
  7. ll nxt = -1;
  8. ll ord = -1;
  9. ll cur = 1;
  10. FOR(i, 1, K+1) {
  11. if (i > N) {
  12. cout << 0 << " ";
  13. continue;
  14. }
  15. if (getExp(P, N-i+1).v == 1) {
  16. numOrd++;
  17. if (nxt == -1) {
  18. nxt = N-i+1;
  19. }
  20. } else {
  21. ans *= 1 - getExp(P, N-i+1);
  22. }
  23. if (getExp(P, i).v == 1) {
  24. numOrd--;
  25. if (ord == -1) {
  26. ord = i;
  27. nxt /= i;
  28. }
  29. ans *= nxt;
  30. ans *= inv(mi(cur));
  31. nxt--; cur++;
  32. } else {
  33. ans *= inv(1 - getExp(P, i));
  34. }
  35. ans *= getExp(P, N) - getExp(P, i-1);
  36. cout << (numOrd==0?ans:0) << " ";
  37. }
  38. cout << nl;
  39.  
  40. }
Advertisement
Add Comment
Please, Sign In to add comment