HNU软件工训作业训练一编程题13. 错误的里程表

这一题很简单就是把错误的信息转换成八进制,然后再用python的方法转十进制

【问题描述】

三月八日,小明买了台新车。但很快小明发现汽车的里程表有问题:里程表上每一位都不显示数字3和数字8,也就是说直接从数字2跳到数字4,直接从数字7跳到数字9。小明纳闷:这车到底行驶里程是多少。

现在,小明向你求助:根据里程表显示的数字,给出真实的行驶里程。

【输入形式】

输入有多组测试数据。

输入第一行正整数T,表示有多少组测试数据。

后面有T行,每行一个非负整数,表示里程表显示数字,里面不含有数字3和8。该数字不超过10位。

40%的测试数据组数T  10≤T≤ 102;

30%的测试数据组数T  102≤T≤ 103;

20%的测试数据组数T  103≤T≤ 104;

10%的测试数据组数T  104≤T≤ 105;

【输出形式】

对于每组测试数据,输出一个整数占一行:真实的行程里程。

【样例输入】

6
0
1
12
159
111224459
124567976

【样例输出】

0
1
10
103
19212007
21913077

【解题技巧】

这不就是一个八进制吗

答案如下

def trans(n):
    a=""
    for i in n:
        if i=="4":
            a+="3"
        elif i=="5":
            a+="4"
        elif i=="6":
            a+="5"
        elif i =="7":
            a+="6"
        elif i=="9":
            a+="7"
        else:
            a+=i
    return a
n=int(input())
for i in range(n):
    b=input()
    c=trans(b)

    print(int(c,8))

整体思路和开始是一样的,重要的还是学到的知识

学到的知识

一、十进制转换成二进制

方法一:bin()

 bin()
 bin(25)>>>>>>>>>’ob11001‘
 #也可以利用replace函数除去前面的ob
 bin(25).replace('ob','')>>>>>>>>>>>11001

方法二:'{:08b}'.format(a)

'{:08b}'.format(25)>>>>>>>>>00011001 #直接去掉ob并且高位补零
 
'{:8b}'.format(25)>>>>>>>>>>11001 #去掉ob高位不补零

二、十进制转换成八进制

oct()
oct(25)>>>>>>>>'0o31'

三、十进制转成十六进制

hex()
hex(25)>>>>>>>'0x19'

四、二进制、八进制、十六进制转化为十进制

int(n,2) int(n,8) int(n,16)

这个真的很方便

五、互相转换


先转十进制再转其他

只要会转十进制后面都OK啦

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值