数位和

题目描述

一个数字的数位和定义为这个数字所有位置的数值的总和.例如: 1234 的数位和为: 1 + 2 + 3 + 4 = 10 5463 的数位和为: 5 + 4 + 6 + 3 = 18 现在有 3 个数 A、B、C, 需要你求出在在 A、B 范围内(包括 A、B)的一个数 X,让 X 的数位和与 C 的数位和差值的绝对值最小。

输入描述:

输入为一行,一行有 3 个数 A、B、C,使用空格隔开。

1 <= A, B, C <= 1,000,000,000)

(0 <= B - A <= 100,000)

输出描述:

输出一个数,即为所求得 X,如果有多解输出最小的那个解。

输入例子:

1 9 10

输出例子:

1

自己的解答

import sys

def get_sum(number):
    number = str(number)
    result = 0
    for each_num in number:
        result += int(each_num)
    return result


def solve(A, B, C_sum):
    min_result = 100000
    min_x = B + 1
    for x in range(A, B + 1):
        temp = abs(get_sum(x) - C_sum)
        if temp < min_result:
            min_result = temp
            min_x = x
    return min_x


line = sys.stdin.readline().strip()
values = map(int, line.split())
A, B, C = values[0], values[1], values[2]
c_value = get_sum(C)
print(solve(A, B, c_value))

Last updated