星环题目
import sys
k, m = map(int, sys.stdin.readline().split())
data = sys.stdin.read().split()
N = len(data) * 8
byte_s = ''.join(list(map(lambda x: f'{int(x):08b}'[::-1], data)))
head, tail = m, m
candidates = []
while head < m +N:
while head < m + N and byte_s[(head % N)] != '1':
head += 1
tail = head
while tail < m + N and byte_s[(tail % N)] == '1':
tail += 1
if tail - head >= k:
candidates.append((tail-head, head))
head = tail
candidates.sort()
if len(candidates)==0:
print(-1)
else:
# print(byte_s)
# print(N)
# print(candidates)
print(candidates[0][1] % N)
- 利用格式化字符串将数字转为二进制
- 使用双指针搜索空白区域
- 输出时需要对位置取余