蓝桥杯 入门训练 A+B问题进阶版(两个3000位数的加法)

本文介绍了一个经典的编程问题“A+B”,通过基础版和进阶版代码展示如何处理从简单整数加法到复杂的大数加法。适用于初学者理解和实践基本的编程概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自古码农出少年,年年都有“A+B”
自古码农出少年,年年都有“A+B”
自古码农出少年,年年都有“A+B”

问题描述
输入A、B,输出A+B。
输入格式
输入的第一行包括两个整数,由空格分隔,分别表示A、B。
输出格式
输出一行,包括一个整数,表示A+B的值。
说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。
样例输入
12 45

样例输出
57

数据规模与约定
-10000 <= A, B <= 10000。

基础版

#include <iostream>
 using namespace std;
 int main()
{
    int a, b;
    cin >> a >> b;
    cout << a + b;
    return 0;
}

进阶版
可以处理两个3000位数的加法

#include <stdio.h>
#include <string.h>
int main()
{
    int i,l1,l2,s,max,min,h;
    char a[3000],b[3000],c[3000];
    while(scanf("%s%s",a,b)!=-1)
    {
        l1=strlen(a);
        l2=strlen(b);
        if(l1>=l2)//处理b,把b第一个字符之前填充'0'字符,直至与a等长,方便a与b对齐相加。
        {
            max=l1;min=l2;
            h=max-min;
            for(i=0;i<min;i++)
                c[i+h]=b[i];//c为临时数组
            for(i=0;i<h;i++)
                c[i]='0';
            for(i=0;i<max;i++)
                b[i]=c[i];
        }
        if(l1<l2)//处理a,把a第一个字符之前填充'0'字符,直至与b等长,方便a与b对齐相加。
        {
            max=l2;min=l1;
            h=max-min;
            for(i=0;i<min;i++)
                c[i+h]=a[i];//c为临时数组
            for(i=0;i<h;i++)
                c[i]='0';
            for(i=0;i<max;i++)
                a[i]=c[i];
        }//现在已经将短的那个字符串在前面加了一些'0'字符,将其转换为了一个与长的那个字符串等长的字符串,方便a与b对齐相加。
        int t[5000]={0};
        int d[5000]={0};
        for(i=max-1;i>=0;i--)
        {
            if(i>=1)
            {
                s=a[i]-'0'+b[i]-'0'+t[i];
                if(s<=9)
                d[i]=s;
                if(s>=10)
                {
                   d[i]=s-10;
                    t[i-1]=1;
                }
            }
            if(i==0)
            {
                s=a[0]-'0'+b[0]-'0';
                d[0]=s+t[0];
            }
        }
        for(i=0;i<max;i++)
        printf("%d",d[i]);
        printf("\n");
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值