递归中的数字总和
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 .
接受的答案中使用的公式实际上应该得到证明。那么,让我们这样做吧。
首先,让我们证明对于任何正整数 N
,N
模 9
等于其数字模 9
.[=18= 的和]
证明了上述陈述后,我们很容易得出结论,N % 9
根据挑战描述提供了所需的数字。唯一的例外是如果 N % 9 == 0
,则数字为 9
.
如果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 .
接受的答案中使用的公式实际上应该得到证明。那么,让我们这样做吧。
首先,让我们证明对于任何正整数 N
,N
模 9
等于其数字模 9
.[=18= 的和]
证明了上述陈述后,我们很容易得出结论,N % 9
根据挑战描述提供了所需的数字。唯一的例外是如果 N % 9 == 0
,则数字为 9
.