description
從高位開始掃瞄,遇到奇數x時,可以採取兩種措施:
x = x-1,此時新數字小於原數字,為了按鍵次數最少,新數字要盡可能大。當x後的數字都取8時,新數字最大。
x = x+1,此時新數字小於原數字,為了按鍵次數最少,新數字要盡可能小。當x後的數字都取0時,新數字最小。
需要注意的是,當x=9進行+1操作時,會產生進製,還有可能導致高位的進一步進製。不過在這種情況下,運算元必然會大於進行-1操作,所以特判一下即可。
import math
if __name__ ==
'__main__'
: t =
int(
input()
)for case in
range(1
, t+1)
: s =
input()
num =
int(s)
res =
0for i in
range
(len
(s)):if
(ord
(s[i])-
ord(
'0'))%
2==1:
if(s[i]
=='9'):
s = s[
0:i]
+'8'
+'8'*(
len(s)
-i-1
) res = num -
int(s)
break
s = s[
0:i]
+chr
(ord
(s[i])-
1)+'8'*(
len(s)
-i-1
) num1 =
int(s)
s = s[
0:i]
+chr
(ord
(s[i])+
2)+'0'*(
len(s)
-i-1
) num2 =
int(s)
# print("nums: ", num1, num2);
res =
min(num-num1, num2-num)
break
print
("case #{}: {}"
.format
(case,
int(res)
))
537 複數乘法
給定兩個表示複數的字串。返回表示它們乘積的字串。注意,根據定義 i2 1 示例 1 輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i 2i 你需要將它轉換為 0 2i 的形式。示例 2 輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i ...
力扣 537 複數乘法
給定兩個表示複數的字串。返回表示它們乘積的字串。注意,根據定義 i2 1 輸入字串不包含額外的空格。輸入字串將以 a bi 的形式給出,其中整數 a 和 b 的範圍均在 100,100 之間。輸出也應當符合這種形式。輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i 2...
Leetcode 537 複數乘法 C
給定兩個表示複數的字串。返回表示它們乘積的字串。注意,根據定義 i2 1 示例 1 輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i 2i 你需要將它轉換為 0 2i 的形式。示例 2 輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i ...