高精度加法,相当于a+b problem,不用考虑负数.
分两行输入。a,b ≤10500
输出只有一行,代表a+b的值
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
-
- const int MAXSIZE = 1000;//最大位数
- string stra,strb;
- int a[MAXSIZE],b[MAXSIZE],c[MAXSIZE];
-
- //模拟竖式计算
- int add(int a[],int b[]){
- int x(0)/*进位*/,i(0)/*长度*/;
- while(i<=stra.length() || i<=strb.length()){
- c[i] = a[i] + b[i] + x;//模拟列竖式计算的过程
- x = c[i]/10;//进位
- c[i] %= 10;
- i++;
- }
- return i;
- }
- //初始化,将字符串倒序存储至int 数组中
- void init(string s,int n[]){
- for(int i=s.length()-1;i>=0;i--)
- n[s.length()-i-1] = s[i]-'0';
- }
-
- //打印a+b的值
- void print(int a[],int b[]){
- int n = add(a,b);
- for(int i = n-1;i>=0;i--){
- if(c[n-1] == 0 && i == n-1) continue;//防止最高位为0
- cout<<c[i];
- }
- }
-
- int main(){
- cin>>stra>>strb;
- init(stra,a);
- init(strb,b);
- print(a,b);
-
- return 0;
- }
-