@Yezi.press
高精度加法
两个高精度数相加的普通实现
课堂示例发布于 2026/09/12#高精度
C++31 行846 Bytes
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
cin>>a>>b;
//翻转对齐
int a_len = a.size(),b_len = b.size();
int a_digit[305] = {0},b_digit[305] = {0};
for(int i=0,j=a_len-1;i<a_len;i++,j--)
a_digit[j] = a[i]-'0';
for(int i=0,j=b_len-1;i<b_len;i++,j--)
b_digit[j] = b[i]-'0';
//按位加和
int c_len = max(a_len,b_len);
int c_digit[305] = {};
for(int i=0;i<c_len;i++){
c_digit[i] = a_digit[i] + b_digit[i];
}
//进位
for(int i=0;i<c_len;i++){
c_digit[i+1] += c_digit[i]/10;
c_digit[i] %= 10;
}
//最高位c_digit[c_len-1]进位 //则c_digit[c_len]不为0
if(c_digit[c_len] > 0) c_len++;
//逆序输出,从高位开始输出
for(int i=c_len-1;i>=0;i--) cout<<c_digit[i];
return 0;
}