题目:
一个5位数是其5个数字之和的2007倍,求这个5位数。
解答:
1.比较暴力的解法 2.57s
def sum_of_item(data):
data_str = str(data)
a = sum([int(x) for x in data_str])
return a
for item in range(10000,1000000):
if item == 2007*sum_of_item(item):
print(item)
2.根据规律来解 9ms
因为2007=3*3*223=9*223
,所以data=data_sum*2007
必然是一个9
的倍数,
根据9的倍数的数字之和为9的倍数
,可知,data_sum
也为9
的倍数
因为是五位数,99999/2007=49.83
,所以data_sum
的上限为45
def sum_of_item(data):
data_str = str(data)
a = sum([int(x) for x in data_str])
return a
for item in range(9,49,9):
data = item*2007
if sum_of_item(data) == item:
print(data)