Advertisement
VNM24ix

Untitled

May 25th, 2025
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.78 KB | Source Code | 0 0
  1. using System;
  2. public static class Program {
  3. public static void Main() {
  4. double P(int k, int l, int m) {
  5. double s = k + l + m;
  6. if (k > 1 && l > 1 && m > 1) {
  7. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  8. double b = (s - k) / s * (s - l) / s * m / s;
  9. double c = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
  10. double d = (s - k) / s * l / s * m / (s - 1);
  11. double e = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
  12. double f = k / s * (s - 1 - l) / (s - 1) * m / (s - 1);
  13. double g = k / s * l / (s - 1) * (s - 2 - m) / (s - 2);
  14. double h = k / s * l / (s - 1) * m / (s - 2);
  15. return (b * P(k, l, m - 1) + c * P(k, l - 1, m) + d * P(k, l - 1, m - 1) + e * P(k - 1, l, m) + f * P(k - 1, l, m - 1) + g * P(k - 1, l - 1, m) + h * P(k - 1, l - 1, m - 1)) / (1 - a);
  16. } else if (k > 1 && l > 1 && m == 1) {
  17. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  18. double b = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
  19. double c = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
  20. double d = k / s * l / (s - 1) * (s - 2 - m) / (s - 2);
  21. return (b * P(k, l - 1, m) + c * P(k - 1, l, m) + d * P(k - 1, l - 1, m)) / (1 - a);
  22. } else if (k > 1 && l == 1 && m > 1) {
  23. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  24. double b = (s - k) / s * (s - l) / s * m / s;
  25. double c = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
  26. double d = k / s * (s - 1 - l) / (s - 1) * m / (s - 1);
  27. return (b * P(k, l, m - 1) + c * P(k - 1, l, m) + d * P(k - 1, l, m - 1)) / (1 - a);
  28. } else if (k == 1 && l > 1 && m > 1) {
  29. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  30. double b = (s - k) / s * (s - l) / s * m / s;
  31. double c = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
  32. double d = (s - k) / s * l / s * m / (s - 1);
  33. return (k / s + b * P(k, l, m - 1) + c * P(k, l - 1, m) + d * P(k, l - 1, m - 1)) / (1 - a);
  34. } else if (k > 1 && l == 1 && m == 1) {
  35. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  36. double b = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
  37. return (b * P(k - 1, l, m)) / (1 - a);
  38. } else if (k == 1 && l > 1 && m == 1) {
  39. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  40. double b = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
  41. return (k / s + b * P(k, l - 1, m)) / (1 - a);
  42. } else if (k == 1 && l == 1 && m > 1) {
  43. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  44. double b = (s - k) / s * (s - l) / s * m / s;
  45. return (k / s + b * P(k, l, m - 1)) / (1 - a);
  46. } else {
  47. double a = (s - k) / s * (s - l) / s * (s - m) / s;
  48. return (k / s) / (1 - a);
  49. }
  50. }
  51. double p1 = P(4, 3, 2);
  52. Console.WriteLine("{0,15:f12}", p1);
  53. double p2 = 4d / 9 * P(3, 2, 3) + 5d / 9 * P(3, 2, 4);
  54. Console.WriteLine("{0,15:f12}", p2);
  55. double p3 = 4d / 9 * 3d / 8 * P(2, 3, 2) +
  56. 4d / 9 * 5d / 8 * P(2, 3, 3) + 5d / 9 * 3d / 9 * P(2, 4, 2) + 5d / 9 * 6d / 9 * P(2, 4, 3);
  57. Console.WriteLine("{0,15:f12}", p3);
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement