You have an infinite amount of timers, each is an hour long (they do not have dials on telling you how long they've been going - they just beep when the time is up). You can set it to double speed at any time, but you cannot set it back to normal speed (eg if you set it to double speed at the start it will last 30 minutes.
Using each timer only once, is it possible to time exactly 25 minutes?
If it is, what is the smallest number of timers you need to do this, and the quickest time you can acheive it?
I have a method to come arbitrarily close to 25 minutes using a finite number of timers.
First, how to construct 1-(1/(2^n)) of an hour. Start with n timers all started simultaneously with timer #1 set to double speed. When #1 beeps (1/2 hr later) start #2, When #2 beeps (1/4 hr later) start #3, etc ... When the last timer beeps 1-(1/(2^n)) hours have passed.
5/12 of an hour can be expressed as 1/4 + 1/8 + 1/32 + 1/128 + 1/512 + ....
Or as (1-3/4) + (1-7/8) + (1-31/32) + (1-127/128) + (1-511/512) + ...
An approximation of 5/12 can then be given as n - (3/4 + 7/8 + 31/32 + 127/128 + ... + (2^(2n-1)-1)/(2^(2n-1)))
Using the latter expression, we can come arbitrarily close to 5/12 using a finite number of timers. For n terms of precision, we need n hours and n^2+n+1 timers.
Put n timers in group A (n hrs). Put 2 timers in group B1 (3/4 hr), 3 in B2 (7/8), 5 in B3 (31/32), 7 in B4 (127/128), etc ...
Group A counts the hours, when one timer is finished in group A, start the next timer.
Groups B1, B2, etc countdown 3/4 + 7/8 + 31/32 + ... hours.
Start group A and group B1, when B1 is finished start group B2, when B2 is finished start group B3, etc.
When group Bn (the last B group) finishes, 3/4 + 7/8 + 31/32 + ... + (2^(2n-1)-1)/(2^(2n-1)) hours have passed. From that point, there is 1/4 + 1/8 + 1/32 + ... + 1/(2^(2n-1)) hours remaining until the last (nth) timer in group A finishes.
(3/4 + 7/8 + 31/32 + ... + (2^(2n-1)-1)/(2^(2n-1))) + (1/4 + 1/8 + 1/32 + ... + 1/(2^(2n-1)))
= (1/4 + 3/4) + (1/8 + 7/8)+ ... + (1/(2^(2n-1)) + (2^(2n-1)-1)/(2^(2n-1)))
= n
Edited on September 16, 2003, 10:05 am