Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- public static class Program {
- public static void Main() {
- double P(int k, int l, int m) {
- double s = k + l + m;
- if (k > 1 && l > 1 && m > 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = (s - k) / s * (s - l) / s * m / s;
- double c = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
- double d = (s - k) / s * l / s * m / (s - 1);
- double e = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
- double f = k / s * (s - 1 - l) / (s - 1) * m / (s - 1);
- double g = k / s * l / (s - 1) * (s - 2 - m) / (s - 2);
- double h = k / s * l / (s - 1) * m / (s - 2);
- 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);
- } else if (k > 1 && l > 1 && m == 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
- double c = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
- double d = k / s * l / (s - 1) * (s - 2 - m) / (s - 2);
- return (b * P(k, l - 1, m) + c * P(k - 1, l, m) + d * P(k - 1, l - 1, m)) / (1 - a);
- } else if (k > 1 && l == 1 && m > 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = (s - k) / s * (s - l) / s * m / s;
- double c = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
- double d = k / s * (s - 1 - l) / (s - 1) * m / (s - 1);
- return (b * P(k, l, m - 1) + c * P(k - 1, l, m) + d * P(k - 1, l, m - 1)) / (1 - a);
- } else if (k == 1 && l > 1 && m > 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = (s - k) / s * (s - l) / s * m / s;
- double c = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
- double d = (s - k) / s * l / s * m / (s - 1);
- return (k / s + b * P(k, l, m - 1) + c * P(k, l - 1, m) + d * P(k, l - 1, m - 1)) / (1 - a);
- } else if (k > 1 && l == 1 && m == 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = k / s * (s - 1 - l) / (s - 1) * (s - 1 - m) / (s - 1);
- return (b * P(k - 1, l, m)) / (1 - a);
- } else if (k == 1 && l > 1 && m == 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = (s - k) / s * l / s * (s - 1 - m) / (s - 1);
- return (k / s + b * P(k, l - 1, m)) / (1 - a);
- } else if (k == 1 && l == 1 && m > 1) {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- double b = (s - k) / s * (s - l) / s * m / s;
- return (k / s + b * P(k, l, m - 1)) / (1 - a);
- } else {
- double a = (s - k) / s * (s - l) / s * (s - m) / s;
- return (k / s) / (1 - a);
- }
- }
- double p1 = P(4, 3, 2);
- Console.WriteLine("{0,15:f12}", p1);
- double p2 = 4d / 9 * P(3, 2, 3) + 5d / 9 * P(3, 2, 4);
- Console.WriteLine("{0,15:f12}", p2);
- double p3 = 4d / 9 * 3d / 8 * P(2, 3, 2) +
- 4d / 9 * 5d / 8 * P(2, 3, 3) + 5d / 9 * 3d / 9 * P(2, 4, 2) + 5d / 9 * 6d / 9 * P(2, 4, 3);
- Console.WriteLine("{0,15:f12}", p3);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement