首页
社区
课程
招聘
求 两个100位以内的大数加法
发表于: 2020-3-18 11:52 3210

求 两个100位以内的大数加法

2020-3-18 11:52
3210
例如:add("8889998","189779999999")
我的思路:
取位数小的,每位相加得到的数字存在数组中,然后再遍历每个数字是否需要进位
def add(a,b):
  if len(a)>=len(b):
    pass
  else:
    a,b=b,a
  index=len(a)-len(b)
  c=[a[:index]]
  for i in range(len(b)):
    print i,index
    k=int(b[i])+int(a[index+i])
    c.append(k)
  tmp=0
  for j in range(len(c)-1,-1,-1):
    print tmp,int(c[j])
    tmp=tmp+int(c[j])
    if tmp>=10  and tmp<20:
      c[j]=str(tmp-10)
      tmp=1
    else:
      c[j]=str(tmp)
      tmp=0
  print a,b,c
  print "".join(c)


大家还有什么其他的思路,欢迎

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 91
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
调试过程

['18977', 17, 17, 17, 18, 18, 18, 17]
0 17
1 18
1 18
1 18
1 17
1 17
1 17
1 18977
189779999999 8889998 ['18978', '8', '8', '8', '9', '9', '9', '7']
2020-3-18 11:53
0
雪    币: 9626
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
3
Python?
https://stackoverflow.com/questions/538551/handling-very-large-numbers-in-python
似乎会自动隐式转换。
最后于 2020-3-18 13:24 被Sprite雪碧编辑 ,原因:
2020-3-18 13:23
0
雪    币: 2998
活跃值: (2664)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
你玩python为什么要学大数加法?
2020-3-18 23:40
0
雪    币: 0
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一个for循环就够了,设置一个进位变量,每次循环的时候判断一下上次是否有进位。
2020-3-19 10:17
0
雪    币: 817
活跃值: (2063)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Python 对数值大小没有限制,直接加不好吗?
>>> 2 ** 512 + 2 ** 1024
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474137785575823367462584850327217807092221598818903544478383492399594404106492955020889912415125404066778200716444484725998099692362528251405302763273230221312
>>> 
最后于 2020-3-19 11:00 被老伙计编辑 ,原因:
2020-3-19 10:55
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
大数不是有现成的库吗?
2020-4-2 16:52
0
游客
登录 | 注册 方可回帖
返回
//