不知道这是不是问这个问题的地方。但我感到完全陷入困境。找不到更好的解决方法。
我是竞争性编程的新手。我正在解决Repeated sum of digits problem
这是问题。
Given an integer N, recursively sum digits of N until we get a single digit.
实施例: -
Input:
2
123
9999
Output:-
6
9
这是我的代码: -
def sum(inp):
if type(inp) == int:
if len(str(inp)) <= 1:
return inp
else:
a = list(str(inp))
while len(a) > 1:
b = 0
for i in a:
b+= int(i)
a = list(str(b))
return b
t = int(raw_input())
for i in range(0,t):
print sum(i)
提交时给出了以下错误: -
Wrong !! The first test case where your code failed:
Input:
42
Its Correct output is:
6
And Your Output is:
0
然而,当我使用42
亲自测试我的代码时,它完美地给了我正确的输出6
。
以下是问题的链接: - Repeated sum of digits Error
答案 0 :(得分:2)
您尚未正确实施代码。您正在i
从0
迭代到t
。为什么??方法如下:
N = 12345
计算数字之和(1 + 2 + 3 + 4 + 5 = 15)。
检查它是否小于10.如果是,那么当前总和就是答案..如果不是..通过设置N = 15
以下是代码:
def sum(inp):
while inp > 9:
num = inp
s = 0
while num > 0:
s = s + num%10
num = num/10
inp = s
return inp
t = int(raw_input())
for i in range(t):
n = int(raw_input())
print sum(n)
编辑:我认为您正在迭代t
,因为您已将t
视为测试用例的数量。因此,在for
循环内,您应为每个测试用例为N
获取另一个输入。 [这取决于您在问题中提供的input
和output
编辑-2 :我稍微更改了代码。这个问题要求我们找到t
个数字的重复总和。为此,我添加了一个循环,我们在其中输入对应于每个测试用例的数字n
,并找到它的重复总和。