天天看點

2786: 這是一道數學題 python2786: 這是一道數學題:輸入 :輸出 :python代碼:

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)

           
2786: 這是一道數學題 python2786: 這是一道數學題:輸入 :輸出 :python代碼:

人生苦短,我用python。