递归中的数字总和

Sum of digits in recursion

如果x是个位数,则整数x的求和S定义为x,否则x的求和定义为x的数位求和的求和。给定两个数 n,k 求 n 与 k 连接时形成的数的超和 times.Note 仅当 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) 
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 的数字都会有重复的数字,这就是为什么你需要取 mod of 9 例如 13 的总和为 1+3 =4 和 13 %9=4 。会有一个特殊情况下,9 的 mod 将为零,这将是数字 9、18、27、36 等,它们可以被 9 整除,它们的总和将始终为 9,因此 return 9 .

接受的答案中使用的公式实际上应该得到证明。那么,让我们这样做吧。

首先,让我们证明对于任何正整数 NN9 等于其数字模 9.[=18= 的和]

证明了上述陈述后,我们很容易得出结论,N % 9 根据挑战描述提供了所需的数字。唯一的例外是如果 N % 9 == 0,则数字为 9.