输入一个正整数
代表限制。
输出一个正整数,代表不小于
的最小“双生数”。该数字不包含前导零。
123
1100
在这个样例中,
的第一、二个数位相同,第三、四个数位相同。我们可以证明,这是符合要求的最小的双生数。
114514
115500
num = [int(n) for n in input().strip()]
num = ([0, 0, 0] if len(num) % 2 else [0, 0]) + num
altered = False
i = 0
while i < len(num):
if altered:
# 之前变过了没问题,那剩下必然是交替01序列
num[i] = num[i + 1] = 1 if num[i - 1] == 0 else 0
else:
if num[i] != num[i + 1]:
num[i] = num[i + 1] = num[i] if num[i] > num[i + 1] else num[i] + 1
altered = True
if i > 1 and num[i] == num[i - 1]:
if num[i] == 9: # 连续9999
num[i - 3] += 1
i -= 6 # 退回到4位前的二元组重新处理,因为while循环最后还有i += 2这里补偿一下
altered = False
else:
num[i] = num[i + 1] = num[i] + 1
altered = True
i += 2
# 删除赘余0
for j in range(len(num)):
if num[j] != 0:
print("".join([str(n) for n in num[j:]]))
break