解题思路:
                     

   一、基本思路:         
          1、字符串读入
          2、字符串转数组
          3、竖式加法
          4、消前导0
          5、倒序输出


           1、字符串读入:因为题目要求计算的数字已经远远超过了long long的范围,所以需要使用一个字符串来存储数字进行输入

        2、字符串转数组:       

                       例如一个数字:1238

                                        x[0]='1' - '0'    -->转换成数组    a[4]=1                        可以推出-->        x[i]='1'    -->    a[4-i]=1  //其中4为x的长度

                                        x[1]='2' - '0'     -->转换成数组    a[3]=2                                                  x[i]='2'    -->    a[4-i]=2

                                        x[2]='3' - '0'     -->转换成数组    a[2]=3                                                  x[i]='3'    -->    a[4-i]=3

                                        x[3]='8' - '0'    -->转换成数组    a[1]=8    //从个位开始                           x[i]='8'    -->    a[4-i]=8

               3、竖式加法:

                                         例如:

                                                        1    2    3    8                                        设:   a[1]=8    ,    b[1]=5    

                                                    +        4    6    5            推出公式——>       则 c[1]+=a[1]+b[1]=13    //小细节,这里要c[i]+=

                                                    ————————                                             c[2]=c[1]/10;    进位

                                                        1    7     0   3                                                  c[1]=c[1]%10;    进位后剩下的

                

                4、消前导0:

                                        要使得  两数的最高位都不是0


                                        如果两个数字都是八位数的话会得到一个九位数,把长度加一即可

            


                5、倒序输出:

                                    以上的结果:

                                                        c[1]=3    c[2]=0    c[3]=7    c[4]=1

                                                        倒序输出即可得到答案

                



参考代码:

#include using namespace std;
string x,y;    //定义两个字符串
int a[100000],b[100000],c[100000],alen,blen,clen; 
int main()
{
cin >> x >> y;    //字符串读入
 
alen=x.length();    //测量字符串x的长度
blen=y.length();    //测量字符串y的长度
for(int i=0 ; i<alen ; i++)
{
a[alen-i]=x[i]-'0';    //字符串转数组 
} 
for(int i=0 ; i<blen ; i++)
{
b[blen-i]=y[i]-'0';    //字符串转数组 
} 
clen=max(alen,blen);    //取最大值 
for(int i=1 ; i 0)    //如果两个位数相同的相加要进一位
{
clen++;    //长度+1
}
for(int i=clen ; i>=1 ; i--)    //倒序输出
{
cout << c[i];
}
return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区