def binarySearch(array, left, right, target): middle = (left + right)/2 if array[middle] == target or array[middle]<target and array[middle+1]>target: return middle elif array[middle]>target: return binarySearch(array, left, middle-1, target) elif array[middle]<target: return binarySearch(array, middle+1, right, target) def findithWord(number, m): tmp = [0,] for i in range(1, len(number)): tmp[i] = sum(number[:i+1]) if m<tmp[1]: return 0 if m>tmp[-1] and m<tmp[-1] + number[-1]: return len(number) - 1 return binarySearch(tmp, 0, len(tmp), m)