python进行两个大数相加:由于int类型32位或64位都有长度限制,超出会内存溢出,无法计算,那么解决方法如下:

思路:

1.将超长数转换成字符串

2.进行长度补零,即让两个要计算的字符串长度一样。

3.将两个字符串,分解成列表,并进行翻转(翻转后,个位在前,目的,从个位往高位计算)

4.创建一个长度与要计算的字符串长度相同的列表,元素填充为0.

5.遍历列表,由于两个列表长度相同,遍历任何一个都可以。

6.由于是10进制,所以两个值累加后与10进行比较,大于等于即有进位。

# 存储每次的计算结果
sum_list = [0] a = "" b = "" # 长度补零操作。
if len(a) > len(b):
lc = len(a) - len(b)
b = '{}{}'.format(r'' * lc, b)
elif len(a) < len(b):
lc = len(b) - len(a)
a = '{}{}'.format(r'' * lc, a) # 初始化长度与计算长度相同,零填充
sum_list = sum_list * len(a) # 所以位数,翻转,即从各位向前计算
str1 = list(a[::-1]) str2 = list(b[::-1]) # 位置累加进位。
for i, v in enumerate(str1):
# sum_list[i] 为进位,所以每次加上进位
v_add = int(str2[i]) + int(v) + sum_list[i]
if v_add >= 10:
m, va = divmod(v_add, 10)
sum_list[i] = va
sum_list[i + 1] = m
else:
# 没有进位,无需累加,直接写值
sum_list[i] = v_add # 计算完成,翻转,转成字符串。
print(''.join('%s'% vi for vi in sum_list[::-1]))

结果:

python进行两个大数相加的更多相关文章

  1. 用字符串模拟两个大数相加——java实现

    问题: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求.可以使用字符串来表示大数,模拟大数相加的过程. 思路: 1.反转两个字符串,便于从低位到高位相加和最高位 ...

  2. [ACM] ZOJ Martian Addition (20进制的两个大数相加)

    Martian Addition Time Limit: 2 Seconds      Memory Limit: 65536 KB   In the 22nd Century, scientists ...

  3. java-两个大数相加

    题目要求:用字符串模拟两个大数相加. 一.使用BigInteger类.BigDecimal类 public static void main(String[] args) { String a=&qu ...

  4. 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过

    杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...

  5. python基础练习题(题目 计算两个矩阵相加)

    day30 --------------------------------------------------------------- 实例044:矩阵相加 题目 计算两个矩阵相加. 分析:矩阵可 ...

  6. 随机数组&大数相加

    随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中 一,      设计思路: 先生成随机数数组,再将数组保存在一个字符串中,然后将数组各数字加和, ...

  7. Linux C/C++ 编程练手 --- 大数相加和大数相乘

    最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...

  8. 基于visual Studio2013解决C语言竞赛题之1077大数相加

        题目 解决代码及点评 /************************************************************************/ /* ...

  9. 大数相加(类似杭电acm1002)

    /*输入两个非常大的整数(完全超出了int.long的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果.*/ //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不 ...

随机推荐

  1. tensorflow函数介绍(4)

    1.队列的实现: import tensorflow as tf q=tf.FIFOQueue(2,'int32') #创建一个先进先出队列,指定队列中最多可以保存两个元素,并指定类型为整数. #先进 ...

  2. navicat的使用(测试库和正式库同步)以及用plsql改表字段属性

    说明:数据库的操作,除了查询,最好先做好备份,比如数据同步.更新.修改或删除之类的: netstat -antp   查看mysql端口 firewall -cmd --list-all    查看防 ...

  3. 两个list 合并后去除掉重复removeAll()的,然后再随机获取最后list中的 几个值

    public static void test1(){ String s1="1,2,5,3,6,9"; String n1[]=s1.split(","); ...

  4. Flask学习笔记01之环境搭建

    使用pycharm搭建Flask运行环境 1. 打开pycharm ,创建一个新的工程 2. 选择创建Flask项目 3. Flask项目创建成功,结构如下 4. 运行项目 5. 发送请求 over!

  5. ht-1 jdk calendar类

    package calendardemo; import java.util.Calendar; public class CalendarDemo { /** * @param args */ pu ...

  6. Flink 在人工智能领域的应用实践

    人工智能是未来十年最重要的技术革命与驱动力,在各行各业产生着日益重要的作用,它与大数据的发展相辅相成,不仅推动人类社会迈入更智慧的世界,也为数据的应用带来无可估量的价值. 11 月 28 - 30 日 ...

  7. EZOJ #362历史

    分析 就是保存前pi-1个数每个ai出现多少次 然后维护这些数当前剩余的最大值 每次和新加进来的比较即可 如果新的大直接取 否则新的最大值一定不大于原来的最大值 因此o(n) 代码 #include& ...

  8. ADO.NET-EF:ADO.NET Entity Framework 百科

    ylbtech-ADO.NET-EF:ADO.NET Entity Framework 百科 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 ...

  9. 传统神经网络ANN训练算法总结 参考 。 以后研究

    http://blog.163.com/yuyang_tech/blog/static/21605008320146451352506/ 传统神经网络ANN训练算法总结 2014-07-04 17:1 ...

  10. 远程操作 SQl server2008新建角色和数据库

    远程操作 SQl server2008 1.windows身份登录,安全性-->登录名(右键)-->新建登录名:yc ,密码111111-->点选sql server身份验证--&g ...