python长整数相乘_python写的大整数相乘的方法
输入
72106547548473106236 982161082972751393 两个大整数
输出结果
70820244829634538040848656466105986748
解题思路
首先根据 大整数相乘的原理的基础上,把大整数进行优化拆分,拆分的长度,要考虑语言中整形的长度。这里用的python,其实可以直接乘的,呵呵。
我暂定设为了 4,也就是 说
7210 6547 5484 7310 6236
98 2161 0829 7275 1393
然后 逐份相乘,当然千万别忘了结果要补零。 例如 当 7310 * 7275 结果一定要补上8个零。
最后 将每一步的结果直接相加就可以了。
里面写了一个函数 xiangjia,就是用于大整数相加的。没做优化,其实也是可以每隔几位 ,分割开的。
# hh=input()
hh=‘72106547548473106236 982161082972751393‘
zonglen=len(hh)-1
a=hh.split()
tiqu=4 #提取位数,大小取决于内存中 int型位数,我这里随便写的。因为python,其实没有限制。
#大整数相加的函数,没做优化 没做分割
def xiangjia(a1,b1):
lista=list(a1[::-1]) #翻转
listb=list(b1[::-1])
list_resu=[]
yu9=0
resu9=0
for x in range(max(len(a1),len(b1))): #取最长的数,循环
if x
ax_temp=int(lista[x])
else:
ax_temp=0 #千万别超出索引范围
if x
bx_temp=int(listb[x])
else:
bx_temp=0
resu9=(ax_temp+bx_temp+yu9)%10 #进位
yu9=(ax_temp+bx_temp+yu9)//10 #余数
list_resu.append(resu9)
if yu9>0:
list_resu.append(yu9) #循环完了后,如果还有余数,继续添加
#转化成正常序列
resu8=‘‘
for x in list_resu[::-1]:
resu8+=str(x)
return resu8
#创建空list_sum
result0=‘‘
#开始遍历
#取长度
a0_len=len(a[0])
a1_len=len(a[1])
#取除结果
chu0=a0_len//tiqu
chu1=a1_len//tiqu
#取余
yu0=a0_len%tiqu
yu1=a1_len%tiqu
x=0
y=0
while chu1-y>=0:
x=0
while chu0-x>=0:
if chu0-x>0:
cheng0=int(a[0][-(1+x*tiqu):-(tiqu+1+x*tiqu):-1][::-1])
else:
if yu0>0:
cheng0=int(a[0][0:yu0])
else:
break
if chu1-y>0:
cheng1=int(a[1][-(1+y*tiqu):-(tiqu+1+y*tiqu):-1][::-1])
else:
if yu1>0:
cheng1=int(a[1][0:yu1])
else:
break
temp_resu=str(cheng0*cheng1)+‘0‘*x*tiqu+‘0‘*y*tiqu
result0=xiangjia(result0,temp_resu)
x+=1
y+=1
print(result0)
这是优化前的一版,完全按照手工计算的竖式方式编的,仅供参考。
hh=input()
zonglen=len(hh)-1
a=hh.split()
#创建空list_sum
list_sum=[]
for x in range(zonglen-1):
list_sum.append(0)
p=0 #空位
for x in a[1][::-1]: #遍历第二个大数 翻转遍历
list0=[]
for y in a[0][::-1]: #遍历第一个大数 翻转遍历
list0.insert(0,int(x)*int(y))
#移位相加
n=len(list0)
for g in range(n):
list_sum[zonglen-1-g-1-p]+=list0[n-g-1]
p+=1
#求和
m=0 #进位数
n=len(list_sum)
for z in range(n): #进位
list_sum[n-z-1]+=m
m=0
if list_sum[n-z-1]>=10:
m=list_sum[n-z-1]//10
list_sum[n-z-1]=list_sum[n-z-1]%10
if m>0: #高位补数 进位
list_sum.insert(0,m)
#转字符串输出
result=‘‘
for x in list_sum:
result+=str(x)
print(result)
python长整数相乘_python写的大整数相乘的方法相关推荐
- 2018拼多多校招【大整数相乘】Python解法
思路 大整数相乘,其实完全套用了列竖式计算乘法的思路,重点就是讲竖式计算这一过程用代码表示.竖式计算中,一个乘数会和另一个乘数逐位相乘,从个位到最高位,相乘的结果依次左移一位,最后将多个计算结果相加即 ...
- 漫画:如何实现大整数相乘?(上)
戳蓝字"CSDN云计算"关注我们哦! 前一段时间,小灰发布了一篇有关大整数相加的漫画,没看过的小伙伴可以先看一看: 漫画:如何实现大整数相加? 那么,大整数相乘又是如何实现的呢? ...
- 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- Cryp.1.大整数相乘---分治法
from:2017 CCF计算机课程改革导教班. 陈道蓄 11 大整数相乘 – 比长乘更快 小学里就教过整数乘的算法.要计算两个正整数a,b的乘积,你用b中每一位依次乘a,并将结果逐行排列,按b的相应 ...
- java大整数类减1,自己写Java大整数《1》表示和加减
自己写Java大整数<一>表示和加减 上周粗略计划自己写Java下的大整数运算. 后来仔细想想其实自己动手写大整数运算有1好2不好.2个不好分别是: 1,肯定没有Java内置的BigInt ...
- 漫画:如何实现大整数相乘?(下)
戳蓝字"CSDN云计算"关注我们哦! 如何用程序实现大整数相乘呢? 在上一篇文章 漫画:如何实现大整数相乘?(上) 当中,我们介绍了两种思路: 1.像列竖式一样,把两整数按位依次 ...
- 第六周作业(等值字串,KMP匹配,大整数相乘,最长公共子串,判断两个字符串是否匹配,最长回文子串,年号字串)
目录 1.等值字串 2.KMP匹配 3.大整数相乘 4.最长公共子串 5.判断两个字符串是否匹配 6.最长回文字串 7.年号字串 补发一下,原来忘记发了. 1.等值字串 [问题描述]如果字符串的一个子 ...
- C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...
- 大整数相乘java_大整数乘法—java实现
大整数相乘 参考博客: https://blog.csdn.net/oh_maxy/article/details/10903929 https://blog.csdn.net/u010867294/ ...
最新文章
- Python 之数据类型
- G-Sensor 校准标准
- 对数函数log()用法
- DVWA靶机安装(超详细教程)
- Message、Handler、MessageQueue、Looper之间的关系
- 【托业】【新托业TOEIC新题型真题】学习笔记10-题库七-P7
- 二分查找和三分求单峰函数极值
- 原创【歌词类】绘流年
- work信息每日汇总
- 利用qrcode生成二维码
- 大锤老湿教您如何配置TP-Link路由器组建wifi上网
- mysql sql 多表更新语句_MySQL跨表、多表更新SQL语句总结
- 人脸识别眨眼张嘴软件_人脸识别张张嘴眨眨眼jar、css、js
- 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考
- 解读《森林防火视频监控系统技术规范》
- 设计一个长方体类Cuboid
- ORACLE进阶(十)start with connect by 实现递归查询
- mysql 视图 事务 存储过程 触发器——龙腾
- 关于LSM-tree 的 Remote Compaction调度
- SMB实现共享文件(上传、下载)
热门文章
- ICPC 徐州 H Yuuki and a problem (树状数组套主席树)
- Min_25筛有关求解次小质因子
- 2020EC-final
- SP1026 FAVDICE - Favorite Dice 期望dp
- D. Bananas in a Microwave
- [NOI Online 2022 提高组] 丹钓战(单调栈 + 树状数组 / 主席树)
- bzoj#4161-Shlw loves matrixI【常系数线性齐次递推】
- 【二分】数列分段(ybtoj 二分-1-1)
- 【结论题(QAQ)】SSL新年欢乐赛暨BPM退役赛 A 送分题(luogu U102372)
- 【动态规划】公共子串