高精加法-P1601 A+B Problem(高精)
P1601 A+B Problem(高精)
思路
- 逆序储存数据,每次相加后处理进位即可
- 逆序可以for循环分别处理,也可以直接利用reverse函数,注意字符串长度不相等时,string类型相加可能会出现问题(如果是数组,其余位会初始化为0,但是string不行)
#include<bits/stdc++.h>
using namespace std;
int c[505] ;
int main()
{string a,b ;cin>>a>>b;reverse(a.begin(),a.end());reverse(b.begin(),b.end());//字符串反转 int k = max(a.length(),b.length());int k0 = min(a.length(),b.length());if(a.size()<b.size()) swap(a,b);//交换a b 保证 长度大的在前 for(int i=0;i<k0;i++){c[i] +=( a[i]-'0')+(b[i]-'0');c[i+1] = c[i]/10;//有进位就加进去 c[i] %= 10;} for(int i=k0;i<k;i++){c[i] += a[i]-'0';c[i+1] = c[i]/10;//有进位就加进去 c[i] %= 10;} if(c[k]>0) k++;//处理最终长度 a+b最多长度比最大的高一位 for(int i=k-1;i>=0;i--){cout<<c[i];}return 0;
}