竞争性编程Python:重复的数字总和错误

时间:2016-10-11 10:54:47

标签: python

不知道这是不是问这个问题的地方。但我感到完全陷入困境。找不到更好的解决方法。

我是竞争性编程的新手。我正在解决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

1 个答案:

答案 0 :(得分:2)

您尚未正确实施代码。您正在i0迭代到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获取另一个输入。 [这取决于您在问题中提供的inputoutput

编辑-2 :我稍微更改了代码。这个问题要求我们找到t个数字的重复总和。为此,我添加了一个循环,我们在其中输入对应于每个测试用例的数字n,并找到它的重复总和。