高精度数据与长整型数据的乘法结果存储问题(python)实现


'''
讨论高精度数据与一个长整数精度范围内的数的乘法

算法设计:
    1、字符型数组存储从键盘输入的高精度数据,这样无需对高精度数据进行分段输入
    2、乘法是按由低位到高位运算的,且常常需要向高位进位,所以高精度数据应该由低位到高位存储在数组a中,每个元素存储一位数字
    3、每一位仅运算一次,所以乘法的结果也可以存储在数组a中
    4、要完成高精度数据从字符型数组存储方式到数值数组存储方式的转换,即数字字符-48就转换为数值数字,不过字符型数组是由高位到低位存储,而数值数组是由低位到高位存储,用两个下标控制就可以方便的完成转换操作
    5、一个高精度数据与一个自然数的乘法的运算过程,用一重循环来实现,循环变量i代表当前参与运算的数组下标,d存储进位
'''

def main():
    result = ''
    a =[]
    for i in range(0,256):
        a.append(0)
    s1 = input("请输入高精度数据:")
    c = int(input("请输入一个整数:"))
    n = len(s1)
    d = 0
    i = 0
    j = n - 1
    while i < n:
        b =(ord(s1[j])-48) * c + d
        a[i] = b % 10
        d = b // 10
        i +=1
        j -=1
    while d !=0:
        a[len(s1)] = d % 10
        d = d //10
        n +=1
    for i in range(n-1,-1,-1):
        result += str(i)
    print(result.lstrip('0'))
if __name__ == '__main__':
    main()

运行结果:
请输入高精度数据:1223445
请输入一个整数:32435
109876543210

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值