题解
2025-08-19 14:06:26
发布于:上海
1阅读
0回复
0点赞
def min_swaps_to_multiple_of_4(n):
s = str(n)
n_len = len(s)
# 一位数情况
if n_len == 1:
return 0 if int(s) % 4 == 0 else -1
min_swaps = float('inf')
last_idx = n_len - 1
second_last_idx = n_len - 2
# 只需要检查所有可能的两位数组合作为最后两位
for i in range(n_len):
for j in range(n_len):
if i == j:
continue
# 检查是否能被4整除
if int(s[i] + s[j]) % 4 != 0:
continue
# 计算交换次数
swaps = 0
# 处理j移动到最后一位
if j != last_idx:
swaps += 1
# 如果i在最后一位,移动j后i的位置变为j
if i == last_idx:
i = j
# 处理i移动到倒数第二位
if i != second_last_idx:
swaps += 1
min_swaps = min(min_swaps, swaps)
return min_swaps if min_swaps != float('inf') else -1
处理输入输出
t = int(input())
for _ in range(t):
n = input().strip()
print(min_swaps_to_multiple_of_4(n))
这里空空如也
有帮助,赞一个