递归中的数字总和

时间:2017-11-12 12:32:12

标签: python python-3.x

如果x是单个数字,则整数x的超和S被定义为x,否则x的超和被定义为x的数字和的超和。给定两个数n,k找到n被连续k次时形成的数的超和。注意k只有当它至少是2位数时才乘以数

输入: 1987年4月

输出: 1

有比这更快的方法吗?

s,k=input().split()
summ=0
for ele in s:
    summ+=int(ele)
s=summ*int(k)

while s>=10:
    s=str(s)
    summ=0 
    for ele in s:
        summ+=int(ele)
    s=summ
print(s) 

1 个答案:

答案 0 :(得分:2)

n,k=map(int,input().split())
if n<10:
    print(n)
else:
    if ((n*k)%9==0):
        print(9)
    else:
        res=(n*k)%9

任何大于9的数字都会重复数字,这就是为什么你需要取9的mod,例如13将有1 + 3 = 4和13%9 = 4的总和。这将是一个特例当9的mod为零,这将是9,18,27,36等数字,可以被9整除,它们的总和将是9,因此返回9。