Решение должно быть найдено в lg(n)
шагах, что означает, что инициализация, такая как low= 0
, high= 32
не будет работать, потому что она будет делать 5
шагов в каждом случае и не будет работать x
больше, чем 2^32
. Правильное решение должно объединять сначала геометрический поиск, где вы удваиваете показатель степени, а затем стандартный дихотомический поиск.
# Geometric search
low= 0
high= 1
while (1 << high) <= x:
low= high
high+= high
# Dichotomic search
while high - low > 1:
mid= (high + low) >> 1
if x < mid:
high= mid
else:
low= mid
Я не думаю изменения "часового пояса" с летним временем. Попробуйте переменную "дневного света". В моей системе:
The external variable timezone contains the difference, in seconds, between UTC and local standard time (for example, in the U.S. Eastern time zone (EST), timezone is 5*60*60). The external variable daylight is non-zero only if a summer time zone adjustment is specified in the TZ environment variable.