A*c
2 楼
goog is the answer.
http://math.stackexchange.com/questions/451065/find-the-sum-of-
【在 b***f 的大作中提到】
: 如题 整数小于2000
http://math.stackexchange.com/questions/451065/find-the-sum-of-
【在 b***f 的大作中提到】
: 如题 整数小于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)
相关阅读
relocation package 和signon bonus是按正常收入交税吗Hr这个时段面临的老大难问题AWS 这个产品感觉药丸湾区- Applied Research Scientist, Computer VisionS386要加入到the Asylum bill,绿卡改革,美华要彻底傻逼了 (转载)再次危急!HR1044/S386将于下周二再次“一致同意”西雅图- 电信运营商测试认证leader职位好的员工是不存在的工作这段时间,发现……可以临时取消面试吗?买提真的玩蛋了, 华人大妈骂fb跳楼都骂了20层楼了 (转载)有些中国公司不愿意出钱ONSITE是啥套路【花街和米联储一直是一丘之貉的牢牢掌控宿主。】 (转载)小黄人的白主子和油主子在飞机上吸毒干炮 (转载)问两道算法题说点好玩的经历过最简单的面试美国找工作的误区那跳楼的奥赛金牌也是给拿大包谷的公司害得 (转载)俺弟三哥化已经不可避免 (转载)恋爱比上班难