输入一个字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。如果没有十六进制字符,不输出任何信息;-0和0都输出为0。
输入格式:
输入一行非空字符串。
输出格式:
在一行中输出转换后的十进制数,或没有任何输出。
输入样例1:
+-P-xf4+-1!
输出样例1:
-3905
输入样例2:
+-nn*)+-lp
输出样例2:
代码长度限制
16 KB
时间限制
500 ms
内存限制
64 MB
栈限制
8192 KB
str=input("")
flag=0
flag1=0
flag2=0
sum=0
shuzi=[]
for i in range (len(str)):
if(str[i]=='-' and flag==0):
flag1=1
break
if('0'<=str[i]<='9'):
flag=1
continue
for i in range(len(str)):
if('0'<=str[i]<='9'):
flag2=1
for i in range(len(str)):
if('0'<=str[i]<='9' or 'a'<=str[i]<='f'):
shuzi.append(str[i])
for i in range(len(shuzi)-1,-1,-1):
if('0'<=shuzi[i]<='9'):
sum+=16**(len(shuzi)-i-1)*int(shuzi[i])
else:
sum+=16**(len(shuzi)-i-1)*(ord(shuzi[i])-ord('a')+10)
if(flag2==0):
print()
elif(sum==0):
print(sum)
else:
if(flag1==1):
print(-sum)
else:
print(sum)