python高精度加法_高精度加法

本文介绍了使用Python模拟实现高精度加法的方法,通过从个位开始逐位相加并处理进位,最后进行逆序输出。代码示例分别展示了从1和0开始存储数组的不同写法,并建议将算法封装到结构体中并重载运算符以优化操作。
摘要由CSDN通过智能技术生成

1. 思路

其实就是模拟,加法是最简单的,从个位开始加,价位加到前一位,然后再取10的余数。

for (int i = 1; i <=len ; ++i) {

// 计算和

c[i] += a[i]+b[i];

// 进位

c[i+1] = c[i]/10;

// 取10的余数

c[i]%=10;

}

2. 实现

int len = max(A.length(),B.length());

// 倒着存,个位到十位,百位。。

for (int i = A.length()-1,j=1; i >=0 ; i--,j++) {

a[j] = A[i] - '0';

}

for (int i = B.length()-1,j=1; i >= 0; i--,j++) {

b[j] = B[i]-'0';

}

for (int i = 1; i <=len ; ++i) {

c[i] += a[i]+b[i];

c[i+1] = c[i]/10;

c[i]%=10;

}

if (c[len+1])len++;

// 逆序输出

for (int i = len; i >=1 ; i--) {

cout<

}

luogu上面是从1开始,就是数组0号位不用,我比较习惯从0开始用。

所以稍微适配一下从0开始的写法:

string A,B;

cin>>A>>B;

int len = max(A.length(),B.length());

// 倒着存,个位到十位,百位。。

for (int i = A.length()-1,j=0; i >=0 ; i--,j++) {

a[j] = A[i] - '0';

}

for (int i = B.length()-1,j=0; i >= 0; i--,j++) {

b[j] = B[i]-'0';

}

for (int i = 0; i

c[i] += a[i]+b[i];

c[i+1] = c[i]/10;

c[i]%=10;

}

if (c[len])len++;

// 逆序输出

for (int i = len-1; i >=0 ; i--) {

cout<

}

3. 相关题目

4. 后记

有时候不要懒,没有那么复杂,当然这个是裸的写法,最好是整合到struct 封装一下,再重载运算符来简化一下操作,之后会总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值