Statistics

Problem Statement for "CalculationCards"

Problem Statement

There are some cards in a box which are specified by a String[] cards. One of the operators '+', '-' or '*' is written on the left half of each card and a digit is written on the right half of each card. You draw all cards from the box randomly, one by one. At each step each of the remaining cards has the same probability of being drawn. Then you align the cards from left to right in the order you have drawn them. Finally, add a zero at the left of the cards and calculate the value of this expression. For example, if you have drawn "+1", "-2" and "*3" (in this order), the expression is "0 + 1 - 2 * 3", whose value is -5. Return the expected value.

Definition

Class:
CalculationCards
Method:
getExpected
Parameters:
String[]
Returns:
double
Method signature:
double getExpected(String[] cards)
(be sure your method is public)

Notes

  • The returned value must have an absolute or relative error less than 1e-9.

Constraints

  • cards will contain between 1 and 50 elements, inclusive.
  • Each element of cards will contain exactly 2 characters.
  • The first character in each element of cards will be either '+', '-' or '*'.
  • The second character in each element of cards will be a digit ('0' - '9').

Examples

  1. { "+1", "-2", "*3" }

    Returns: -1.6666666666666667

    One of the following expressions will be made with equal probability: 0 + 1 - 2 * 3 = -5 0 + 1 * 3 - 2 = 1 0 - 2 + 1 * 3 = 1 0 - 2 * 3 + 1 = -5 0 * 3 + 1 - 2 = -1 0 * 3 - 2 + 1 = -1

  2. { "+1", "+2", "+3" }

    Returns: 6.0

    The value will always be 6.

  3. { "+3", "-7", "*4", "+6" }

    Returns: 3.5

  4. { "+1", "*2", "*3" }

    Returns: 3.1666666666666665

  5. { "*7", "-2", "*0", "+3", "*8" }

    Returns: 5.633333333333334

  6. { "+1", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9" }

    Returns: 3.5660295009090906E8

  7. {"-9", "-7", "+8", "+8", "-9", "+9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9"}

    Returns: 0.0

  8. { "+6" }

    Returns: 6.0

  9. { "-1" }

    Returns: -1.0

  10. { "*1" }

    Returns: 0.0

  11. { "*6", "*8", "*4", "*5", "*1", "*1", "*1", "*7", "*7", "*1", "*0", "*0", "*7", "*2", "*3", "*6", "*5", "*2", "*8", "*4", "*8", "*5", "*8", "*7", "*8", "*3", "*8", "*7", "*4", "*3", "*4", "*5", "*6", "*0", "*6", "*0", "*8", "*1", "*5", "*7", "*6", "*0", "*3", "*3", "*3", "*1", "*5", "*1", "*6", "*8" }

    Returns: 0.0

  12. { "+1", "+7", "-5", "+7", "-6", "-3", "-1", "-2", "+4", "+4", "-0", "-4", "*0", "*8", "*2", "*0", "*8", "*3", "*3", "*2", "*2", "*2", "*4", "*0", "*0", "*6", "*2", "*1", "*8", "*8", "*7", "*1", "*8", "*6", "*6", "*1", "*0", "*1", "*3", "*6", "*0", "*3", "*6", "*1", "*4", "*1", "*2", "*8", "*3", "*1" }

    Returns: 1985605.4307536348

  13. { "+5", "-7", "-5", "-4", "+4", "+4", "-5", "-6", "+7", "+1", "+6", "+1", "+5", "-4", "-1", "+1", "-4", "+7", "+2", "+3", "-2", "+7", "-4", "+7", "-6", "+3", "+5", "+4", "+4", "+2", "-6", "+6", "+2", "-6", "+2", "-6", "-6", "+8", "-8", "+6", "-8", "-4", "+7", "-3", "+1", "+3", "-2", "+3", "-3", "+5" }

    Returns: 21.0

  14. { "+0", "-0", "+0", "-0", "+0", "-0", "+0", "+0", "+0", "+0", "+0", "-0", "-0", "-0", "-0", "+0", "-0", "+0", "-0", "-0", "+0", "+0", "-0", "-0", "+0", "+0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0" }

    Returns: 0.0

  15. { "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "+1", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0" }

    Returns: 0.02

  16. { "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "*0", "-1", "*0", "*0", "*0", "*0", "*0", "*0", "*0" }

    Returns: -0.02

  17. { "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "+9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9" }

    Returns: 1.1595994216470254E46

  18. { "*9", "-9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9" }

    Returns: -1.1595994216470254E46

  19. { "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "-9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "*9", "+9", "*9", "*9", "*9", "*9" }

    Returns: 0.0

  20. { "+8", "*4", "*3", "+6", "*2", "*3", "*0", "*0", "*7", "*2", "*3", "*6", "*0", "*5", "*2", "*4", "*4", "*5", "+0", "-8", "*8", "*4", "-4", "-5", "-8", "*1", "-1", "*6", "*0", "*1", "*1", "*6", "*5", "-2", "-2" }

    Returns: -144466.71629718354

  21. { "*8", "*3", "-3", "*7", "+4", "*5", "-7", "-8", "+5", "+0", "*6", "+4", "+8", "+1", "+7", "-6", "-7", "+8", "*1" }

    Returns: 46.2109243697479

  22. { "*6", "*2", "*4", "*1", "*5", "*3", "*8", "*3", "*7", "*5", "+6", "*3", "*2", "*5", "+6", "*8", "*6" }

    Returns: 1.561613785006993E8

  23. { "+3", "-1", "+1", "+7", "-7", "-4", "-0", "+8", "-6", "+0", "-4", "+5", "+6", "-2", "+1", "+8", "-5", "+1", "-7", "-4", "-7", "+1", "-0", "*4", "*1", "*8", "+6", "+6", "+3", "-2", "-6", "+1", "+4", "+2", "+5", "+3", "+2", "-1", "+5", "+6" }

    Returns: 36.16194331983806

  24. { "+0", "*3", "-1", "+8", "*0", "-1", "-1", "+1", "+4", "+0", "+5", "+5", "*4", "-3", "+6", "*5", "+3", "+8", "*8", "-0", "+6", "*5", "+7", "-7", "*1", "-2", "-8", "-6", "-5", "-1", "+1", "-6", "-7", "+0", "+1", "+5", "+5", "+0", "-8", "+6", "+6", "-0", "+8" }

    Returns: 50.7965727156998

  25. { "*8", "*7", "*0", "*4", "-7", "*7", "*0", "-0", "*6", "*6", "+1", "*1", "*0", "*2", "-0", "*5", "+6", "+1", "*7", "+3", "*2", "*0", "+4", "*7", "*3", "-8", "*3", "-2", "*7", "*3", "*7", "-3" }

    Returns: -41823.576350207964

  26. { "-1", "+6", "-2", "+1", "+7", "+4", "-6", "-4", "+5", "-3", "+3", "-2", "+4", "-3", "+1", "-3", "+2", "+2", "+6", "+5", "+6", "-3", "-2", "+1", "*6", "+5", "+6", "+6", "+2" }

    Returns: 50.41379310344828

  27. { "-2", "*2", "-3", "*1", "*1", "*6", "*4", "+6", "*7", "-2", "*3", "-6", "*3", "*4", "*3", "-4" }

    Returns: -961.8637362637363

  28. { "+2", "*7", "-7", "*3", "*5", "-3", "*6", "*5", "-7", "-7", "-7", "*7", "+8", "-7", "-4", "-8", "-4", "-4", "-4", "-8", "*5", "+5", "+0", "-2", "*7", "+2" }

    Returns: -1075.5319335127115

  29. { "*1", "*7", "*7", "*0", "+3", "*3", "*5", "*7", "*1", "*6", "*4", "*4", "*3", "*6", "*6", "*2", "*1", "*7", "-6", "*7", "*2", "*5", "*1", "*1", "*6", "*6", "*6", "*3", "*2", "*1", "*8", "*4" }

    Returns: -3.754917009006996E12

  30. { "*5", "*8", "*1", "*4", "+0", "-3", "-5" }

    Returns: -118.4

  31. { "+3", "+6", "+6", "+5", "-5", "+2", "-5", "+1", "-7", "+6", "-1", "+3", "-5", "-7", "-4", "+5", "+6", "+5", "+4", "-5", "-2", "-4", "+4", "-7", "+7", "-7", "+1", "-1", "-0", "-4", "+5", "+2", "-5", "+0", "+0", "-4", "-0", "-6", "-2", "+4", "+4", "-0", "*5" }

    Returns: -2.186046511627907

  32. { "+6", "*8", "-7", "*1", "-4", "+6", "*2", "+4", "*1", "*0", "*3", "*2", "-7", "*8", "-6", "*3", "*2", "*0", "+8", "*3", "-5", "+5", "+4", "-7", "*0", "*7", "-6", "+5", "*0", "*8", "-2", "+0", "-7", "*5", "+0", "-0", "+6", "+3", "-8", "-2", "+3" }

    Returns: -74.75801350075345

  33. { "*2", "-5", "-3", "+4", "-0", "+5", "+8", "*7", "+5", "-5", "*3", "-2", "-6", "+4", "-7", "+7", "-6", "*7", "-7", "-6", "+0", "-3", "*0", "-8", "-5", "-4", "+1", "-4", "+8", "+5", "*8", "*3", "*2", "*6", "-8", "+1", "-5", "+1", "-4", "-1", "+1", "+4", "+8", "-0", "-6" }

    Returns: -85.5540427484124

  34. { "-6", "*3", "+8", "-4", "*2", "*7", "+3", "*6", "*2", "+1", "*2", "*5", "+8", "+4", "+2", "-0", "-5", "*8", "+4", "*1", "*6", "+6", "+4", "+0", "*5", "*6", "-5", "*7", "*7", "*3", "+0", "-8", "-2", "+7", "-7" }

    Returns: 1917.2142762049934

  35. { "+5", "-7", "*6", "+2", "*7", "-8", "*3", "-2" }

    Returns: -67.14285714285714

  36. { "-6", "+6", "-8", "*6", "-1", "*6", "-8", "+5", "-4", "-0", "+7", "+0", "+4", "+7", "+1", "-0", "+8", "+6", "-0", "-4", "-7", "+2", "-8", "+1", "-4", "*8", "+6", "-7", "-8", "-8", "+6", "+0", "-1", "+1", "-0", "+2", "+0", "+5", "-6", "+0", "-5", "-5", "-6", "-1", "-3", "+5", "+5", "+6", "*2" }

    Returns: -25.69292652306066

  37. { "+4", "-5", "+5", "+5", "-2", "+3", "-7", "-3", "+7", "+0", "+4", "+3", "+1", "-5", "+3", "-6", "+7", "+7", "-3", "+5", "-1", "-7", "-4", "-4", "+3", "+0", "*2", "+3", "+3", "-1", "+2", "-7", "*6", "+5", "+3", "-4", "-5", "+2", "-0", "-3", "-2", "-2", "+0", "+6", "+1" }

    Returns: 12.555555555555555

  38. { "*7", "-4", "*0", "*1", "*1", "-7", "*6", "*8", "*8", "*0", "*6", "*5", "*0", "-0", "*1", "+3", "*1", "*6", "*5", "+1", "+8", "+5", "+7", "-0" }

    Returns: 1531.115424590889

  39. { "*6", "-2", "+8", "*8", "*8", "+4", "*4", "*8", "*6", "-7", "+3", "+4" }

    Returns: 2240.688311688312

  40. { "-6", "+1", "-6", "*1", "+7", "+8", "-0", "+1", "+6", "-2", "+0", "*7", "-6", "+3", "-6", "-7", "+6", "-8", "-7", "+2", "+0", "+4", "-6", "*3", "+0", "*5", "-2", "+4", "-7", "-6", "-4", "*2", "+3", "-4", "+5", "+5", "-6", "-7", "+6" }

    Returns: -42.71143624827835

  41. { "+1", "-0", "*5", "-1", "+3", "+7", "-7", "*5", "+3" }

    Returns: 14.666666666666666

  42. { "-0", "*6", "-4", "*7", "+5", "+7" }

    Returns: 41.6

  43. { "+3", "-2", "-0", "*4", "+4", "-2", "+2", "*5", "+1", "-0", "*4", "*3", "-4", "-6", "*7", "*7", "-2", "+2", "-1", "+2", "*2", "*4", "*8", "-5", "-5", "-4", "*7" }

    Returns: -738.9398022521592

  44. { "+5", "*4", "*5", "*8", "*7", "+5", "-6", "+3", "-5", "*2", "-7", "*5", "+1", "*2", "*8", "*7", "*5", "*7", "+5", "*6", "*7", "-4", "*8", "*2" }

    Returns: -656352.7381432002

  45. { "*0", "*7", "*3", "*3", "-5", "*0", "*2", "*3", "*7", "-3", "*1", "+3", "+2", "*0", "*2", "*6", "*4", "*4", "*7", "*4", "*4", "+6", "*7", "*3", "*2", "*2", "*6", "*2", "*1", "-7", "*3", "*3", "-1", "-5", "*4", "*7", "*5", "*6", "*4", "*6", "*7", "*5", "*0", "*6", "*6", "*8" }

    Returns: -1.1884042530544556E12

  46. { "*4", "*4", "*0", "*6", "*3", "-2", "-6", "*5", "*1", "*7", "*0", "*2", "*0", "+2", "*4", "*2", "*5", "*4", "*2", "*8", "*2", "*2", "*7", "*6", "*2", "*6", "*1", "*1", "*7", "*3", "*5", "*6", "*0", "*5", "*4" }

    Returns: -9.371074599502592E9

  47. { "*7", "*8", "*1", "*4", "*0", "*8", "*2", "*6", "*5", "*8", "*2", "*4", "-3", "*2", "+0", "*5", "*0", "*6", "*1", "*1", "*1", "*8", "*2", "*3", "*3", "*0", "*6", "*6", "*5", "*2", "+3", "*6", "*4", "*7", "*4", "*8" }

    Returns: 0.0

  48. { "+5", "+7", "*7", "+4", "*6", "*2", "*5", "*0", "*6", "*3", "*4", "*2", "*1", "*0", "+2", "*1", "*5", "-1", "*0", "*6", "+2", "+4", "*1", "*6", "*4", "*2", "*2", "*2", "*8", "*5", "-6", "*6", "+8", "-3", "+4", "*0", "+0", "*0", "*8", "*3", "*7" }

    Returns: 1416753.1123958053

  49. { "-8", "+6", "+6", "*2", "*4", "*0", "-1", "-3", "*7", "*8", "*2", "+4", "-2", "*1", "-3", "-6", "-4", "*1", "*5", "*0", "*3", "*0", "+6", "*8", "*7", "*1", "-4", "*4" }

    Returns: -395.3761627038999

  50. { "-7", "+6", "*3", "*0", "*8", "+8", "-5", "*3", "+4", "*0", "+7", "-8", "-5", "+5", "+2", "*2", "+3", "+2", "-0", "*3", "+8", "-5", "*6", "+6", "-4", "-2", "-6", "+0", "*4" }

    Returns: 26.612218765742004

  51. { "*1", "*5", "*4", "*2", "*0", "*4", "*4", "*0", "*0", "*5", "*1", "*4", "*2", "*6", "*3", "*6", "*1", "*1", "*8", "*4", "*7", "*3", "*6", "*6", "*5", "*7", "*8", "*3", "*4", "*0", "*3", "*3", "-2", "*4", "*5", "*6", "*5", "*8" }

    Returns: -5.397485582092096E13

  52. { "-2", "+5", "*0", "-8" }

    Returns: -3.75

  53. { "+7", "-7", "+0", "-1", "-8", "-4", "-3", "+3", "+7", "+3", "*0", "-7", "+5", "-8", "+0", "+7", "+6", "*3", "+3", "+8", "+2", "-6", "+8", "*0", "+2", "-5", "+3", "-5", "+6", "-0", "+0", "-2", "-8", "-8", "-5", "-0", "-8", "*8", "-5", "-3", "+0", "+6", "-1", "+1", "-8", "+5", "-4", "-4", "+6", "-4" }

    Returns: -29.77795918367347

  54. { "+5", "*4", "*8", "-5", "*8", "*2", "+1", "*4", "-7", "*3", "+0", "-3", "*4" }

    Returns: -733.4802197802197

  55. { "*3", "*2", "*5", "-8", "-3", "*1", "*1", "*4", "*3", "*8", "+8", "*0", "*7", "*5", "*4", "*8", "+6" }

    Returns: 10227.520612720613

  56. { "*3", "*6", "*3", "*0", "*7", "*8", "*8", "*5", "*4", "*2", "*4", "*2", "-6", "*7", "*5", "*0", "-0", "*8", "+7", "*8", "*7", "+7", "+8", "*4", "*2", "*8", "*2", "-8", "+8", "+5", "*6", "+5", "*6", "*7", "*6", "*8", "+8", "*6", "*5", "*0", "*1" }

    Returns: 3.282180765367744E11

  57. { "-2", "*8", "+2", "*6", "-6", "+1", "-2", "+1", "-6", "+5", "-7", "*2", "*3" }

    Returns: -63.16153846153846


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: