输入

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写的大整数相乘的方法相关推荐

  1. 2018拼多多校招【大整数相乘】Python解法

    思路 大整数相乘,其实完全套用了列竖式计算乘法的思路,重点就是讲竖式计算这一过程用代码表示.竖式计算中,一个乘数会和另一个乘数逐位相乘,从个位到最高位,相乘的结果依次左移一位,最后将多个计算结果相加即 ...

  2. 漫画:如何实现大整数相乘?(上)

    戳蓝字"CSDN云计算"关注我们哦! 前一段时间,小灰发布了一篇有关大整数相加的漫画,没看过的小伙伴可以先看一看: 漫画:如何实现大整数相加? 那么,大整数相乘又是如何实现的呢? ...

  3. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  4. Cryp.1.大整数相乘---分治法

    from:2017 CCF计算机课程改革导教班. 陈道蓄 11 大整数相乘 – 比长乘更快 小学里就教过整数乘的算法.要计算两个正整数a,b的乘积,你用b中每一位依次乘a,并将结果逐行排列,按b的相应 ...

  5. java大整数类减1,自己写Java大整数《1》表示和加减

    自己写Java大整数<一>表示和加减 上周粗略计划自己写Java下的大整数运算. 后来仔细想想其实自己动手写大整数运算有1好2不好.2个不好分别是: 1,肯定没有Java内置的BigInt ...

  6. 漫画:如何实现大整数相乘?(下)

    戳蓝字"CSDN云计算"关注我们哦! 如何用程序实现大整数相乘呢? 在上一篇文章  漫画:如何实现大整数相乘?(上) 当中,我们介绍了两种思路: 1.像列竖式一样,把两整数按位依次 ...

  7. 第六周作业(等值字串,KMP匹配,大整数相乘,最长公共子串,判断两个字符串是否匹配,最长回文子串,年号字串)

    目录 1.等值字串 2.KMP匹配 3.大整数相乘 4.最长公共子串 5.判断两个字符串是否匹配 6.最长回文字串 7.年号字串 补发一下,原来忘记发了. 1.等值字串 [问题描述]如果字符串的一个子 ...

  8. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  9. 大整数相乘java_大整数乘法—java实现

    大整数相乘 参考博客: https://blog.csdn.net/oh_maxy/article/details/10903929 https://blog.csdn.net/u010867294/ ...

最新文章

  1. Python 之数据类型
  2. G-Sensor 校准标准
  3. 对数函数log()用法
  4. DVWA靶机安装(超详细教程)
  5. Message、Handler、MessageQueue、Looper之间的关系
  6. 【托业】【新托业TOEIC新题型真题】学习笔记10-题库七-P7
  7. 二分查找和三分求单峰函数极值
  8. 原创【歌词类】绘流年
  9. work信息每日汇总
  10. 利用qrcode生成二维码
  11. 大锤老湿教您如何配置TP-Link路由器组建wifi上网
  12. mysql sql 多表更新语句_MySQL跨表、多表更新SQL语句总结
  13. 人脸识别眨眼张嘴软件_人脸识别张张嘴眨眨眼jar、css、js
  14. 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考
  15. 解读《森林防火视频监控系统技术规范》
  16. 设计一个长方体类Cuboid
  17. ORACLE进阶(十)start with connect by 实现递归查询
  18. mysql 视图 事务 存储过程 触发器——龙腾
  19. 关于LSM-tree 的 Remote Compaction调度
  20. SMB实现共享文件(上传、下载)

热门文章

  1. ICPC 徐州 H Yuuki and a problem (树状数组套主席树)
  2. Min_25筛有关求解次小质因子
  3. 2020EC-final
  4. SP1026 FAVDICE - Favorite Dice 期望dp
  5. D. Bananas in a Microwave
  6. [NOI Online 2022 提高组] 丹钓战(单调栈 + 树状数组 / 主席树)
  7. bzoj#4161-Shlw loves matrixI【常系数线性齐次递推】
  8. 【二分】数列分段(ybtoj 二分-1-1)
  9. 【结论题(QAQ)】SSL新年欢乐赛暨BPM退役赛 A 送分题(luogu U102372)
  10. 【动态规划】公共子串