2786: 這是一道數學題:
一個數通過最小次數交換數位變成20的倍數。問最少交換次數是多少?
輸入 :
一個正整數T(1<=T<=200),代表有T組輸入。每個輸入包含一個正整數N(1<=N<=10的18次方),N沒有前導0。
輸出 :
最小的交換次數。如果不能交換出20的倍數,輸出-1
python代碼:
t = int(input())
for i in range(t):
x = input()
num0 = x.find('0') # 傳回0所在的索引,沒有傳回-1
num = 0
str1 = '02468'
# 沒有0直接傳回結果
if num0 == -1:
print(-1)
else:
# 隻有滿足至少有兩個0或者一個0一個偶數,即能夠被20整除
y = 0
for j in range(len(x)):
if x[j] in str1 and j != num0:
y += 1
break
# 隻有一個0
if y == 0:
print(-1)
# 滿足至少兩個0 或一個0一個偶數
else:
# 最後一位是0
if x[-1] == '0':
# 倒數第二位是0或偶數
if x[-2] in str1:
print(0)
else:
print(1)
# 最後一位數不是0
else:
# 倒數第二位是0
if x[-2] == '0':
if x[-1] in str1:
print(1) # 代表最後兩位數交換
else:
# 特殊情況舉例7007、7207
if x[:-2].find('0') == -1:
print(2) # 代表7207 交換2次
else:
print(1) # 代表7007 交換1次
else:
if x[-2] in str1:
print(1)
else:
print(2)
人生苦短,我用python。