首页 > 试题广场 >

数位和

[编程题]数位和
  • 热度指数:3837 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
把一个整数的各位累加,NowCoder称它为“数位和”。例如正整数123456的数位和是1+2+3+4+5+6=21。现在,请你帮忙计算一个整数n在r进制下的数位和,并用相应的进制输出结果。

输入描述:
输入有多组数据。
每组数据包含两个正整数n (1≤n≤2147483647)和r (2≤n≤16)。


输出描述:
对应每一组数据,输出十进制正整数n转换成r进制后的数位和,并用r进制输出结果。
示例1

输入

123456 10<br/>123456 2

输出

21<br/>110
def jinzhi(num,n):
    s='0123456789ABCDEFG'
    out=''
    while num:
        out=s[num%n]+out
        num=num//n
    return out
while True:
    try:
        s='0123456789ABCDEFG'
        x=list(map(int,input().split()))
        num=x[0]
        n=x[1]
        result=jinzhi(num,n)
        he=0
        for i in result:
            he+=int(s.find(i))
        print(jinzhi(he,n))
    except:
        break

发表于 2018-11-22 09:09:20 回复(0)

python solution

def baseN(num, b):
    return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") + "0123456789ABCDEFGHIGKLMNO"[num % b])
while True:
    try:
        a,b=map(int,input().split())
        arr="0123456789ABCDEFGHIGKLMNO"
        print(baseN(sum(map(lambda c:arr.index(c),list(baseN(a,b)))),b))

    except:
        break
发表于 2017-10-11 06:33:08 回复(1)

问题信息

难度:
2条回答 11371浏览

热门推荐

通过挑战的用户

数位和