Hard math riddles


Can you arrange four 9's and use of at most 2 math symbols, make the total be 100?
99 / .99 or 99 + 9/9
81.26 %
44 votes

Create a number using only the digits 4,4,3,3,2,2,1 and 1. So I can only be eight digits. You have to make sure the ones are separated by one digit, the twos are separated by two digits the threes are separated with three digits and the fours are separated by four digits.
80.65 %
82 votes

At a dinner party, many of the guests exchange greetings by shaking hands with each other while they wait for the host to finish cooking. After all this handshaking, the host, who didn't take part in or see any of the handshaking, gets everybody's attention and says: "I know for a fact that at least two people at this party shook the same number of other people's hands." How could the host know this? Note that nobody shakes his or her own hand.
Assume there are N people at the party. Note that the least number of people that someone could shake hands with is 0, and the most someone could shake hands with is N-1 (which would mean that they shook hands with every other person). Now, if everyone at the party really were to have shaken hands with a different number of people, then that means somone must have shaken hands with 0 people, someone must have shaken hands with 1 person, and so on, all the way up to someone who must have shaken hands with N-1 people. This is the only possible scenario, since there are N people at the party and N different numbers of possible people to shake hands with (all the numbers between 0 and N-1 inclusive). But this situation isn't possible, because there can't be both a person who shook hands with 0 people (call him Person 0) and a person who shook hands with N-1 people (call him Person N-1). This is because Person 0 shook hands with nobody (and thus didn't shake hands with Person N-1), but Person N-1 shook hands with everybody (and thus did shake hands with Person 0). This is clearly a contradiction, and thus two of the people at the party must have shaken hands with the same number of people. Pretend there were only 2 guests at the party. Then try 3, and 4, and so on. This should help you think about the problem. Search: Pigeonhole principle
80.14 %
48 votes

You are standing in a pitch-dark room. A friend walks up and hands you a normal deck of 52 cards. He tells you that 13 of the 52 cards are face-up, the rest are face-down. These face-up cards are distributed randomly throughout the deck. Your task is to split up the deck into two piles, using all the cards, such that each pile has the same number of face-up cards. The room is pitch-dark, so you can't see the deck as you do this. How can you accomplish this seemingly impossible task?
Take the first 13 cards off the top of the deck and flip them over. This is the first pile. The second pile is just the remaining 39 cards as they started. This works because if there are N face-up cards in within the first 13 cards, then there will be (13 - N) face up cards in the remaining 39 cards. When you flip those first 13 cards, N of which are face-up, there will now be N cards face-down, and therefore (13 - N) cards face-up, which, as stated, is the same number of face-up cards in the second pile.
80.05 %
67 votes

How can you divide a pizza into 8 equal slices using only 3 straight cuts?
Cut 1: Cut the pizza straight down the middle into two halves. Cut 2: Keeping the two halves in the place, cut the pizza straight down the middle at right angles to the first cut (you will be left with 4 equal quarters) Cut 3: Pile the 4 quarters on top of each other and cut through the middle of the pile. You will be left with 8 equal slices.
79.77 %
66 votes

Consider the following explanation for why 1=2: 1. Start out Let y = x 2. Multiply through by x xy = x2 3. Subtract y2 from each side xy - y2 = x2 - y2 4. Factor each side y(x-y) = (x+y)(x-y) 5. Divide both sides by (x-y) y = x+y 6. Divide both sides by y y/y = x/y + y/y 7. And so... 1 = x/y + 1 8. Since x=y, x/y = 1 1 = 1 + 1 8. And so... 1 = 2 How is this possible?
Step 5 is invalid, because we are dividing by (x-y), and since x=y, we are thus dividing by 0. This is an invalid mathematical operation (division by 0), and so by not followinng basic mathematical rules, we are able to get strange results like these.
79.60 %
53 votes

On the first day they cover one quarter of the total distance. The next day they cover one quarter of what is left. The following day they cover two fifths of the remainder and on the fourth day half of the remaining distance. The group now have 14 miles left, how many miles have they walked?
68.962962 miles
79.60 %
53 votes

Using only and all the numbers 3, 3, 7, 7, along with the arithmetic operations +,-,*, and /, can you come up with a calculation that gives the number 24? No decimal points allowed. [For example, to get the number 14, we could do 3 * (7 - (7 / 3))]
7 * ((3 / 7) + 3) = 24
79.34 %
46 votes

Two words are anagrams if and only if they contain the exact same letters with the exact same frequency (for example, "name" and "mean" are anagrams, but "red" and "deer" are not). Given two strings S1 and S2, which each only contain the lowercase letters a through z, write a program to determine if S1 and S2 are anagrams. The program must have a running time of O(n + m), where n and m are the lengths of S1 and S2, respectively, and it must have O(1) (constant) space usage.
First create an array A of length 26, representing the counts of each letter of the alphabet, with each value initialized to 0. Iterate through each character in S1 and add 1 to the corresponding entry in A. Once this iteration is complete, A will contain the counts for the letters in S1. Then, iterate through each character in S2, and subtract 1 from each corresponding entry in A. Now, if the each entry in A is 0, then S1 and S2 are anagrams; otherwise, S1 and S2 aren't anagrams. Here is pseudocode for the procedure that was described: def areAnagrams(S1, S2) A = new Array(26) A.initializeValues(0) for each character in S1 arrayIndex = mapCharacterToNumber(character) //maps "a" to 0, "b" to 1, "c" to 2, etc... A[arrayIndex] += 1 end for each character in S2 arrayIndex = mapCharacterToNumber(character) A[arrayIndex] -= 1 end for (i = 0; i < 26; i++) if A[i] != 0 return false end end return true end
79.34 %
46 votes
Page 1 of 3.