|
| 1 | +PROBLEM STATEMENT |
| 2 | +Here is an interesting factoid: "On the planet Earth, if there are at least 23 people in a room, the chance that two of them have the same birthday is greater than 50%." You would like to come up with more factoids of this form. Given two integers (minOdds and daysInYear), your method should return the fewest number of people (from a planet where there are daysInYear days in each year) needed such that you can be at least minOdds% sure that two of the people have the same birthday. See example 0 for further information. |
| 3 | + |
| 4 | +DEFINITION |
| 5 | +Class:BirthdayOdds |
| 6 | +Method:minPeople |
| 7 | +Parameters:int, int |
| 8 | +Returns:int |
| 9 | +Method signature:int minPeople(int minOdds, int daysInYear) |
| 10 | + |
| 11 | + |
| 12 | +NOTES |
| 13 | +-Two people can have the same birthday without being born in the same year. |
| 14 | +-You may assume that the odds of being born on a particular day are (1 / daysInYear). |
| 15 | +-You may assume that there are no leap years. |
| 16 | + |
| 17 | + |
| 18 | +CONSTRAINTS |
| 19 | +-minOdds will be between 1 and 99, inclusive. |
| 20 | +-daysInYear will be between 1 and 10000, inclusive. |
| 21 | +-For any number of people N, the odds that two people will have the same birthday (in a room with N people, on a planet with daysInYear days in each year) will not be within 1e-9 of minOdds. (In other words, you don't need to worry about floating-point precision for this problem.) |
| 22 | + |
| 23 | + |
| 24 | +EXAMPLES |
| 25 | + |
| 26 | +0) |
| 27 | +75 |
| 28 | +5 |
| 29 | + |
| 30 | +Returns: 4 |
| 31 | + |
| 32 | +We must be 75% sure that at least two of the people in the room have the same birthday. This is equivalent to saying that the odds of everyone having different birthdays is 25% or less. |
| 33 | + |
| 34 | +If there is only one person in the room, the odds are 5/5 or 100% that nobody shares a birthday. |
| 35 | +If there are two people in the room, the odds are 5/5 * 4/5 = 80% that nobody shares a birthday. This is because the second person has 4 "safe" days on which his birthday could fall, out of 5 possible days in the year. |
| 36 | +If there are three people in the room, the odds of no overlap are 5/5 * 4/5 * 3/5 = 48%. |
| 37 | +If there are four people in the room, the odds are 5/5 * 4/5 * 3/5 * 2/5 = 19.2%. This means that you can be (100% - 19.2%) = 80.8% sure that two or more of them do, in fact, have the same birthday. |
| 38 | + |
| 39 | +We only need to be 75% sure of this, which was untrue for three people but true for four. Therefore, your method should return 4. |
| 40 | + |
| 41 | +1) |
| 42 | +50 |
| 43 | +365 |
| 44 | + |
| 45 | +Returns: 23 |
| 46 | + |
| 47 | +The factoid from the problem statement. If there are 22 people in a room, the odds of a shared birthday are roughly 47.57%. With 23 people, these odds jump to 50.73%, which is greater than or equal to the 50% needed. |
| 48 | + |
| 49 | +2) |
| 50 | +1 |
| 51 | +365 |
| 52 | + |
| 53 | +Returns: 4 |
| 54 | + |
| 55 | +Another example from planet Earth. The odds of a repeat birthday among only four people are roughly 1.64%. |
| 56 | + |
| 57 | +3) |
| 58 | +84 |
| 59 | +9227 |
| 60 | + |
| 61 | +Returns: 184 |
0 commit comments