题目描述
代码实现
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[22]={0},b[22]={0},c[22]={0},d[22]={0};
void change(string s,string s1,string s2)
{
int n=s1.size();
int m=s2.size();
int p=s.size();
for(int i=0;i<p;i++)
{
c[i]=s[p-1-i]-'0';
}
for(int i=0;i<n;i++)
{
a[i]=s1[n-1-i]-'0';
}
for(int i=0;i<m;i++)
{
b[i]=s2[m-1-i]-'0';
}
}
int main()
{
string s1,s2,s3;
cin>>s1>>s2>>s3;
change(s1,s2,s3);//将字符串转化为数字并且反过来存在数组中
int m=s2.size();
int p=s3.size();
int k=0;
int carry=0;//表示进位
for(int i=0;i<m||i<p;i++)
{
int temp=a[i]+b[i]+carry;
if(c[i]==0)
{
c[i]=10;
}
d[k++]=temp%c[i];
carry=temp/c[i];
}
if(carry!=0)
{
d[k++]=carry;
}
while(k-1>=1&&d[k-1]==0)//消除高位多余的0
{
k--;
}
for(int i=k-1;i>=0;i--)
{
cout<<d[i];
}
return 0;
}
来源:CSDN
作者:拥抱我很难嘛
链接:https://blog.csdn.net/zslaaa666/article/details/104739448