【例题】lanqiao1230 进制转换

请添加图片描述

输入样例

2
2 10 
10101 
11 2
1793A5068

输出样例

21
10101111001010100111010101011

解题思路

先把字符串s转化成十进制,再把十进制转化成m进制。

代码

# n-->m
T=int(input())
# input:s char
# output:int
int_to_char="0123456789ABCDEF"
char_to_int={}
for i in range(16):
    char_to_int[int_to_char[i]]=i
def n_to_ten(n,s):
    ans=0
    l=len(s)
    for index, char in enumerate(s):
        ans+=char_to_int[char]*(n**(l-index-1))
    return ans
def ten_to_m(m,t):
    ans=[]
    t=int(t)
    while t:
        ans.append(t%m)
        t//=m
    ans.reverse()
    return "".join([int_to_char[i] for i in ans])
for _ in range(T):
    n,m=map(int,input().split())
    s = input().strip()
    print(ten_to_m(m,n_to_ten(n,s)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值