Python Code:
import math as lp
n=int(input())
origin=n
old=[]#存n的舊各數字
new=[]#存n的舊各數字
def transtodigit(li):#將數字串列轉成十進位數
num=0
for i in li:
num=num*10+i
return num
def after(li,even):
if even<len(li):
li[even]+=1
for i in range(even+1,len(li)):
li[i]=1
return transtodigit(li)
# 借二位以上就不用管它了,因為它不會是取完絕對值後最小
def before(li,even):
if even<len(li):
if li[even]==0:
li[even]-=1
li[even-1]-=1
if li[even-1]<=0:
li[even]=9
li[even-1]=0
elif li[even]!=0:
li[even]-=1
for i in range(even+1,len(li)):
li[i]=9
return transtodigit(li)
q=lp.floor(lp.log10(n))+1 #取出n的位數
for i in range(q):
ls=n%10
old.append(ls)
new.append(ls)
n//=10
old.reverse()
new.reverse()
for i in range(len(old)):
if (old[i]%2)==0:
first_even=i #找出第一個出現偶數的位數
break
else:
first_even=len(old)+1
ans=min(after(new,first_even)-origin,origin-before(old,first_even))
print(ans)
沒有留言:
張貼留言