首页 > 试题广场 >

又一版 A+B

[编程题]又一版 A+B
  • 热度指数:17635 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

输入描述:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。


输出描述:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
示例1

输入

8 1300 48
2 1 7
0

输出

2504
1000
def conversion(num,m):    #进制转换,最多转换三十六进制吧
    baseChar = "0123456789abcdefghijklmnopqrstuvwxyz"
    tempNum = num
    if num==0:
        return 0
    result = []
    while tempNum>0:
        tempNum,b = divmod(tempNum,m)
        result.append(baseChar[b])
    return "".join(result[::-1])

while True:
    try:
        digitList = list(map(int,input().split()))
        if digitList[0]==0:
            break
        print(conversion(digitList[1]+digitList[2],digitList[0]))
    except Exception:
        break

编辑于 2018-09-20 23:46:56 回复(0)

python解法,简单易懂,写了个进制转换的函数。

def baseN(num, b):
    return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])


while True:
    try:
        a = input()
        if a != "0":
            jinzhi, num1, num2 = map(int, a.split())
            print(baseN((num1 + num2), jinzhi))

    except:
        break
发表于 2017-10-06 22:11:42 回复(0)

问题信息

难度:
2条回答 7173浏览

热门推荐

通过挑战的用户

查看代码