如果数字太大,不能将字符串转换为整数类型的时候,怎么运算数字呢?

目录

  • 原题
  • 代码实现

原题

给定两个字符串形式的非负整数 num1num2 ,计算它们的和。

注意:

  • num1num2 的长度都小于 5100.

  • num1num2 都只包含数字 0-9. - num1num2 都不包含任何前导零。

  • 你不能使用任何内建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

代码实现

程序从num1, num2的最后一位数开始,依次计算num1, num2同一数位的数字之和,如果和大于10,则进位。

要点:

  • add=s//10需要放在s=a1+a2+add之后,这样下一次计算才能获得前一次计算的进位。
  • 计算完最后一个num1, num2的数位后,如果有进位,计算结果还需要加上进位。
def solution(nums):num1,num2=numsif len(num1)<len(num2):num1,num2=num2,num1 # 交换num1, num2变量num2=num2.zfill(len(num1)) # num2 的开头用0填充,使num2的长度等于num1的长度result=""add=0for i in range(-1,-len(num2)-1,-1):a1,a2=int(num1[i]),int(num2[i])s = a1 + a2 + add#print(a1,a2,s)result = str(s%10) + resultadd=s//10 # 下一位的进位if add>0:result=str(add)+result # 计算结果加上最后一个进位return result

写完代码后,还需要进行测试。这里使用random模块,随机产生两个整数,进行计算。

from random import randint
for i in range(1000):num1,num2=str(randint(0,10000)),str(randint(0,10000))result=solution([num1,num2])if result != str(int(num1)+int(num2)):raise Exception("计算错误: %s %s %s"%(num1,num2,result))else:print("计算正确: %s %s %s"%(num1,num2,result))

部分运行结果:

计算正确: 3910 3129 7039
计算正确: 1018 4859 5877
计算正确: 3055 7940 10995
计算正确: 1018 1904 2922
计算正确: 4657 3795 8452
计算正确: 393 6770 7163
计算正确: 2512 2379 4891
计算正确: 5701 1903 7604

注:题目来自CSDN的“每日一练”习题功能。
有兴趣的读者,可以对程序进行相应的改编,如计算减法、乘法、除法等。

Python 算法设计(2) - 大数运算 - 基于字符串的数字运算和进位相关推荐

  1. 视频教程-算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践-C/C++

    算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿 ...

  2. python算法设计 - 后缀表达式

    python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.后缀表达式 二. ...

  3. Python 算法设计与分析 投资问题

    Python 算法设计与分析 投资问题 投资问题 题目:设有m元钱,n项投资,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,3,-,n.问:如何分配这m元钱,使得投资的总效益最高? ...

  4. python算法设计 - 汉诺塔

    python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.汉诺塔 二.源码 ...

  5. python算法设计 - 二进制

    python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.二进制1的个数 ...

  6. python算法设计 - 下一组排列

    python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.下一组排列 二. ...

  7. python算法设计 - 埃拉托色尼筛选法

    python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.埃拉托色尼筛选法 ...

  8. 蒙哥马利基2的Python算法实现(大数模乘)

    RSA的软件算法参考算法 下面介绍基于蒙哥马利的基2的Python算法实现,即大数模乘模乘的实现,易于硬件实现 #A #p=10669721913248017310606431714870563867 ...

  9. python算法设计

    算法是一个循序渐进的过程,它定义了一组指令,以一定的顺序执行以获得所需的输出.算法通常独立于底层语言,即算法可以以多种编程语言实现. 从数据结构的角度看,以下是一些重要的算法类型: * 搜索      ...

  10. 蓝桥杯之Python算法设计系列(一)

    目录 蓝桥杯简介 什么是蓝桥杯? 大赛项目 一.个人赛软件类 二.个人赛电子类 三.青少年创意编程组 四.视觉设计大赛 Python程序设计 注意事项 Python程序语言设计-计算机二级 Pytho ...

最新文章

  1. Mybatis接口Mapper内的方法为啥不能重载?
  2. 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第二讲)
  3. 深圳神经科学研究院院长谭力海: AI取代人脑? 不, 必须向人脑“学习”!
  4. Mybatis使用时因jdbcType类型大小写书写不规范导致的异常
  5. re正则表达式的使用
  6. 【C语言】Simple Sorting(结构)
  7. jdbc面试_JDBC面试问答
  8. UGUI的image
  9. 声音特征提取方法:综述【线性声谱图(Line Spectrum)、对数梅尔谱(Log-mel)、梅尔频率倒谱系数(MFCCs)】
  10. 14款免费的GIF制作软件(转载)
  11. java随机昵称_Java随机产生中文昵称
  12. js Date 获取 年 月 日
  13. 白糖详细 制造工艺、等级划分、国家标准号和注意事项
  14. 基于STM32的ESP8266获取心知天气数据
  15. c语言如何判断当前是 空字符,c语言如何判断字串中没有没有某个字元?
  16. 大疆 L1 任务文件格式说明(CLC/CLI/CMI/IMU/LDR/MNF/RTB/RTK/RTL/RTS/JPG/MOV)
  17. 依据MPU6050角速度原始数据的计步算法
  18. php开启websocket服务,php实现简单的websocket服务
  19. android 系统的组成,简析Android 的GUI 系统组成
  20. 简单关键字中英文翻译机代码~

热门文章

  1. Python 批量爬取猫咪图片实现千图成像
  2. 内网win10安装flash插件
  3. win10安装flash ax debuger
  4. “十四五”国家应急体系规划发布 智慧应急成为总体建设目标之一
  5. 信息系统项目管理师必背核心考点(四十一)风险管理计划
  6. c语言课程设计找出肇事车牌,C语言课程设计报告01.doc
  7. 西门子840d备份到u盘_840dsl 启动服务U盘制作和CF卡数据备份回装
  8. 克拉克变换(Clarke Transformation)
  9. C语言——蔡勒(Zeller)公式的使用
  10. 十折交叉验证python_Python机器学习:6.2 K折交叉验证评估模型性能