1 条题解

  • 1
    @ 2025-2-15 17:47:09

    题解来喽!

    #include <iostream>
    #include <cstring>
    using namespace std;
    int main(){
        
        char a[505] = {}, b[505] = {}; //输入的加数
        int a1[505] = {}, b1[505] = {}; //转换后参与运算的加数
        int lena, lenb;                 //a,b的位数
        
        // 1. 使用字符数组存储数据
        cin >> a >> b; 
        lena = strlen(a);  //获取A,B的位数
        lenb = strlen(b); 
        
        // 2. 将数组内字符倒序,并转化为数字
        for (int i = 0; i < lena; i++) //倒序转换A
        {
            //作答区域1:将数组a转化为数字,并倒序存储到数组a1
            a1[lena - 1 - i] = a[i] - '0';
          	
        }
        for (int i = 0; i < lenb; i++)
        {
            b1[lenb - 1 - i] = b[i] - '0';
        }
    
        
        int res[100] = {}; //加法运算结果
        int num = 0;       //最终按位运算的次数
        int in = 0;       //进位变量
        
        // 3. 枚举运算次数,按位运算
        num = max(lena, lenb);
        for (int i = 0; i < num; i++)
        {
            //作答区域2:a1与b1按位运算,并加上进位
            res[i] = a1[i] + b1[i] + in;
          	in = res[i] / 10;
          	res[i] %= 10;
          	
        } 
        //4、判断最高位进位
        if (in > 0)    
        {    
            res[num] = in;    
            num++;
        }        
        
        // 5. 倒序输出 
        for (int i = num - 1; i >= 0; i--)
        {
            cout << res[i];
        }
        return 0;
    }
    
    • 1

    信息

    ID
    465
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    11
    已通过
    4
    上传者