A*c
2 楼
goog is the answer.
http://math.stackexchange.com/questions/451065/find-the-sum-of-
【在 b***f 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 如题 整数小于2000
http://math.stackexchange.com/questions/451065/find-the-sum-of-
【在 b***f 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 如题 整数小于2000
w*r
3 楼
试着写了个python的, n = 2000 花时间大概十几秒钟
def tolist(n):
result = []
while (n >= 10):
result.append(n % 10)
n = n / 10
result.append(n)
return result
def mult(num1, num2):
result = [0]*(len(num1) + len(num2))
for i in range(len(num1)):
for j in range(len(num2)):
temp = num1[i] * num2[j]
if temp >= 10:
result[i + j] += temp % 10
result[i + j + 1] += temp / 10
else:
result[i + j] += temp
for k in range(len(result)):
if result[k] >= 10:
result[k + 1] += result[k] / 10
result[k] = result[k] % 10
if result[-1] == 0:
result.pop(-1)
return result
def factsum(n):
result = [1]
for i in range(1, n + 1):
result = mult(result, tolist(i))
return sum(result)
def tolist(n):
result = []
while (n >= 10):
result.append(n % 10)
n = n / 10
result.append(n)
return result
def mult(num1, num2):
result = [0]*(len(num1) + len(num2))
for i in range(len(num1)):
for j in range(len(num2)):
temp = num1[i] * num2[j]
if temp >= 10:
result[i + j] += temp % 10
result[i + j + 1] += temp / 10
else:
result[i + j] += temp
for k in range(len(result)):
if result[k] >= 10:
result[k + 1] += result[k] / 10
result[k] = result[k] % 10
if result[-1] == 0:
result.pop(-1)
return result
def factsum(n):
result = [1]
for i in range(1, n + 1):
result = mult(result, tolist(i))
return sum(result)
相关阅读
网上投简历了是不是就不能内推了?title到底有多重要one question about bit operator这种情况下怎么办staff engineer @qualcom or L62@MS?split a string into words in a dictionary这题有最坏情况比exponential 快的解法么?C++ linux 线程面试题H1B申请材料3月31日(周六)usps寄到能行吗?如果面amazon失败,是不是就不能申他家的其它部门了?找工作过程心理一阵阵难过求Marvell和Interdigital内推哪里有Algorithms in C++ 的答案?Microsoft 校园面试面经 + Onsite 求 BlessOnsite后到怕收到email了请教大家一个签证的问题30岁的时候是senior SDE,今后该怎样才能更好的发展呢求linkedin onsite指导有经验的人能进来帮我看看么 export controlled technology问一个anagram的题兰毕业后在家九年,娃们大了开始找工作,今天拿offer!