解题思路:
                     

   一、基本思路:         
          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;
}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

摸鱼 2周前 回复TA
你真棒