星环题目

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)
  • 利用格式化字符串将数字转为二进制
  • 使用双指针搜索空白区域
  • 输出时需要对位置取余