Python 算法设计(2) - 大数运算 - 基于字符串的数字运算和进位
如果数字太大,不能将字符串转换为整数类型的时候,怎么运算数字呢?
目录
- 原题
- 代码实现
原题
给定两个字符串形式的非负整数 num1
和 num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字 0-9. -num1
和num2
都不包含任何前导零。你不能使用任何内建 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) - 大数运算 - 基于字符串的数字运算和进位相关推荐
- 视频教程-算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践-C/C++
算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿 ...
- python算法设计 - 后缀表达式
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.后缀表达式 二. ...
- Python 算法设计与分析 投资问题
Python 算法设计与分析 投资问题 投资问题 题目:设有m元钱,n项投资,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,3,-,n.问:如何分配这m元钱,使得投资的总效益最高? ...
- python算法设计 - 汉诺塔
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.汉诺塔 二.源码 ...
- python算法设计 - 二进制
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.二进制1的个数 ...
- python算法设计 - 下一组排列
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.下一组排列 二. ...
- python算法设计 - 埃拉托色尼筛选法
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.埃拉托色尼筛选法 ...
- 蒙哥马利基2的Python算法实现(大数模乘)
RSA的软件算法参考算法 下面介绍基于蒙哥马利的基2的Python算法实现,即大数模乘模乘的实现,易于硬件实现 #A #p=10669721913248017310606431714870563867 ...
- python算法设计
算法是一个循序渐进的过程,它定义了一组指令,以一定的顺序执行以获得所需的输出.算法通常独立于底层语言,即算法可以以多种编程语言实现. 从数据结构的角度看,以下是一些重要的算法类型: * 搜索 ...
- 蓝桥杯之Python算法设计系列(一)
目录 蓝桥杯简介 什么是蓝桥杯? 大赛项目 一.个人赛软件类 二.个人赛电子类 三.青少年创意编程组 四.视觉设计大赛 Python程序设计 注意事项 Python程序语言设计-计算机二级 Pytho ...
最新文章
- Mybatis接口Mapper内的方法为啥不能重载?
- 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第二讲)
- 深圳神经科学研究院院长谭力海: AI取代人脑? 不, 必须向人脑“学习”!
- Mybatis使用时因jdbcType类型大小写书写不规范导致的异常
- re正则表达式的使用
- 【C语言】Simple Sorting(结构)
- jdbc面试_JDBC面试问答
- UGUI的image
- 声音特征提取方法:综述【线性声谱图(Line Spectrum)、对数梅尔谱(Log-mel)、梅尔频率倒谱系数(MFCCs)】
- 14款免费的GIF制作软件(转载)
- java随机昵称_Java随机产生中文昵称
- js Date 获取 年 月 日
- 白糖详细 制造工艺、等级划分、国家标准号和注意事项
- 基于STM32的ESP8266获取心知天气数据
- c语言如何判断当前是 空字符,c语言如何判断字串中没有没有某个字元?
- 大疆 L1 任务文件格式说明(CLC/CLI/CMI/IMU/LDR/MNF/RTB/RTK/RTL/RTS/JPG/MOV)
- 依据MPU6050角速度原始数据的计步算法
- php开启websocket服务,php实现简单的websocket服务
- android 系统的组成,简析Android 的GUI 系统组成
- 简单关键字中英文翻译机代码~
热门文章
- Python 批量爬取猫咪图片实现千图成像
- 内网win10安装flash插件
- win10安装flash ax debuger
- “十四五”国家应急体系规划发布 智慧应急成为总体建设目标之一
- 信息系统项目管理师必背核心考点(四十一)风险管理计划
- c语言课程设计找出肇事车牌,C语言课程设计报告01.doc
- 西门子840d备份到u盘_840dsl 启动服务U盘制作和CF卡数据备份回装
- 克拉克变换(Clarke Transformation)
- C语言——蔡勒(Zeller)公式的使用
- 十折交叉验证python_Python机器学习:6.2 K折交叉验证评估模型性能