数位和
题目描述
一个数字的数位和定义为这个数字所有位置的数值的总和.例如: 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
Was this helpful?